继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Docker Swarm部署(1)

Qyouu
关注TA
已关注
手记 449
粉丝 87
获赞 413

Docker Machine 创建 Docker 主机

Docker Machine 创建三台主机

docker-machine create --driver virtualbox defaultdocker-machine create --driver virtualbox worker1
docker-machine create --driver virtualbox worker2
  • --driver 指定那个由那种驱动来创建虚拟机,下面是一份驱动列表,可选择所需的驱动来创建虚拟机。
    Machine drivers List

docker-machine常用命令 官网命令详情

  • help 查看帮助信息

  • active 查看活动的Docker主机

  • config 输出连接的配置信息

  • create 创建一个Docker主机

  • env 显示连接到某个主机需要的环境变量

  • inspect 输出主机更新信息

  • ip 获取Docker主机地址

  • kill 停止某个Docker主机

  • ls 列出所有管理的Docker主机

  • regenerate-certs 为某个主机重新成功TLS认证信息

  • restart 重启Docker主机

  • rm 删除Docker主机

  • scp 在Docker主机之间复制文件

  • ssh SSH到主机上执行命令

  • start 启动一个主机

  • status 查看一个主机状态

  • stop 停止一个主机

  • upgrade 更新主机Docker版本为最新

  • url 获取主机的URL

Docker Swarm 配置集群节点

创建一个 Docker Swarm 管理节点

初始化集群的时候,会自动把当前节点设置为管理节点

docker swarm init --advertise-addr 192.168.99.100(manager节点IP)
  • --advertise-addr:publish主节点IP
    得到default的join --token,随后用来将worker1,worker2加入manger集群

查看节点 join --token

docker@default:~$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-34aqnqamrm71s2dqtoyk6jnddkslbhf7jrwnvb7sh1xvc7dv3a-ebtqa2s1us3kaav7vui2wf4nb 192.168.99.100:2377docker@default:~$ docker info | grep -A5 Swarm
Swarm: active
 NodeID: yx2548i6b8sr1a7pa9fm04ki5
 Is Manager: true
 ClusterID: pn54eo31jedgf09wi44my835h
 Managers: 1
 Nodes: 1
docker@default:~$

加入集群

如果其他节点关闭,使用以下方法启动节点虚拟机

# 启动worker1,worker2$ docker-machine start worker1
$ docker-machine start worker2

在worker1 ,worker2上运行以下命令,加入default主机上创建的swarm集群

docker@default:~$ docker swarm join --token SWMTKN-1-14samnq4vi3brud74f3erylzx8ngx08bo4m8amk579i6y1yif7-b60g94a6r3d9qtl60mlva22yp 192.168.99.100:2377

结点查看

docker@default:~$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
yx2548i6b8sr1a7pa9fm04ki5 *   default             Ready               Active              Leader              18.05.0-ce
kn5d0vim6zw2a4kvfvkq627ec     worker1             Ready               Active              Reachable           18.05.0-ce2hd6p5acvo0xd3appptq9io9p     worker2             Ready               Active              Reachable           18.05.0-ce# 删除结点docker@default:~$ docker node rm worker1(结点主机名)

在Swarm中部署服务

部署一个nginx服务

# 先创建一个名为network_swarm的网络docker network create --driver overlay network_swarm
docker network ls# 创建一个名为service_test的服务,并制定网络名network_swarm,使用nginx镜像docker@default:~$ docker service create --replicas 2 -p 8888:80 --name nginx nginx:latest
sw8j3fy3tzow7pjujj2wqnu3g
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 
# 查看服务状况docker@default:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
sw8j3fy3tzow        nginx 
docker@default:~$ docker service ps nginx
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
x4wp2ii0umu9        nginx.1             nginx:latest        worker1             Running             Running 25 seconds ago                       
3u2zzr1a4kjc        nginx.2             nginx:latest        default             Running             Running 25 seconds ago

---replicas 2 表示创建服务的实例个数(默认是一个),即在2其中两个docker主机上分别创建一个nginx服务。

从图中可以看出nginx服务启动在了default和worker1主机上

手动设置实例个数

由上可以看出,有一台集群中worker1的主机上没有运行nginx服务,通过以下命令在worker1主机上运行一个nginx服务,并通过docker service ps nginx查看

docker@default:~$ docker service scale nginx=3nginx scaled to 3overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service converged 
docker@default:~$ docker service ps nginx
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
x4wp2ii0umu9        nginx.1             nginx:latest        worker1             Running             Running 5 minutes ago                       
3u2zzr1a4kjc        nginx.2             nginx:latest        default             Running             Running 5 minutes ago                       
i252oxks2kib        nginx.3             nginx:latest        worker2             Running             Running 7 seconds ago

测试

从上面可以看到三台主机上nginx服务均已启动,使用任意的主机IP进行访问https://img3.mukewang.com/5d2db47300011c2d07300186.jpghttps://img4.mukewang.com/5d2db47800018ef307300174.jpghttps://img3.mukewang.com/5d2db47e0001f71307130171.jpg

测试成功!!



作者:知足常乐晨
链接:https://www.jianshu.com/p/e1df8a80f6c2

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP