分享

docker(5) swarm service 管理

 阿青哥Joe 2018-06-27

 1、创建service

#-p 80:80  http端口映射到公网 --replicas 2    2个容器 --name 服务名称 dockercloud/hello-world 镜像名称

test@swarm-master:~$ docker service create -p 80:80 --replicas 2  --name myhelloworld2 dockercloud/hello-world 
9ypnuj72zc2jufhkh7cfp413r

2、缩扩容器

2.1服务容器数量缩减少为1个

test@swarm-master:~$ docker service scale myhelloworld2=1
myhelloworld2 scaled to 1

如下图所示myhelloworld2 只有一个容器,并且在swarm-master(192.168.1.80)上面

 

访问swarm-master(192.168.1.80),swarm-node1(192.168.1.73),指向同一个容器(f52a4217f329)。

复制代码
test@swarm-master:~$ curl http://192.168.1.80/|grep hostname
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   473    0   473    0     0  45245      0 --:--:-- --:--:-- --:--:-- 52555
    <h3>My hostname is f52a4217f329</h3>    </body>
test@swarm-master:~$ curl http://192.168.1.73/|grep hostname
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   473    0   473    0     0  38234      0 --:--:-- --:--:-- --:--:-- 43000
    <h3>My hostname is f52a4217f329</h3>    </body>
复制代码

#疑问 容器在swarm-master(192.168.1.80)启动,但是在swarm-node1(192.168.1.73)仍能访问

#service 映射端口是在所有swarm节点映射相同端口,当访问的机器没有该端口对应的容器,会跳转到其他有容器的节点上面

2.2 服务器容器数量扩展为3

test@swarm-master:~$ docker service scale myhelloworld2=3
myhelloworld2 scaled to 3

#如下图3个容器,swarm-node1 2个容器,swarm-master 1个容器

 #访问测试 3次请求,分别分配到3台容器上面,开来是平均分配的。

复制代码
test@swarm-master:~$ curl http://192.168.1.80/|grep hostname
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   473    0   473    0     0  31349      0 --:--:-- --:--:-- --:--:-- 36384
    <h3>My hostname is f52a4217f329</h3>    </body>
test@swarm-master:~$ curl http://192.168.1.80/|grep hostname
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   473    0   473    0     0  37743      0 --:--:-- --:--:-- --:--:-- 43000
    <h3>My hostname is 6adf7d28c639</h3>    </body>
test@swarm-master:~$ curl http://192.168.1.80/|grep hostname
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   473    0   473    0     0  30660      0 --:--:-- --:--:-- --:--:-- 39416
    <h3>My hostname is 58ab1ee1cce2</h3>    </body>
复制代码

3 服务升级

#懒得搭建registry服务器,就随便打个tag 作为升级image,还好swarm一个节点有镜像其他节点都可以用。

做个测试镜像mytest

test@swarm-master:~$ docker image tag  dockercloud/hello-world  mytest

看下当前容器版本

test@swarm-master:~$ docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
f52a4217f329        dockercloud/hello-world:latest   "/bin/sh -c /run.sh"     About an hour ago   Up About an hour    80/tcp                                           myhelloworld2.2.ia09q7zyok9vti8np47bpartw

升级容器版本

test@swarm-master:~$ docker service update --image mytest myhelloworld2

查看升级后版本

test@swarm-master:~$ docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                        PORTS                                            NAMES
dfca160c1097        mytest:latest                    "/bin/sh -c /run.sh"     22 seconds ago      Up 10 seconds                 80/tcp                                           myhelloworld2.3.3vgw0u1fza6isoao9f8o6iadb
0b2b68c21ab4        mytest:latest                    "/bin/sh -c /run.sh"     37 seconds ago      Up 25 seconds                 80/tcp                                           myhelloworld2.2.9x9lyv443tkk9b68pt11spmt0

4 查看服务

test@swarm-master:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
neljh6f52ziz        myhelloworld2       replicated          2/2                 mytest:latest       *:80->80/tcp

5 删除服务

test@swarm-master:~$ docker service rm myhelloworld2
myhelloworld2

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多