docker swarm 是一个docker宿主管理软件,还有k8s和mesos 作为同类容器管理软件,在docker 10.15之后合并进docker 不用单独在安装了

https://docs.docker.com/engine/swarm/services/

docker swarm 实验一 docker services 入门_第1张图片

VirtualBox 开3个虚拟机

docker swarm 实验一 docker services 入门_第2张图片


主机清单

swarm01 192.168.0.127

swarm02 192.168.0.128

swarm03 192.168.0.129


安装docker

$ curl -fsSL get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh --mirror Aliyun

# $ sudo sh get-docker.sh --mirror AzureChinaCloud

docker swarm 实验一 docker services 入门_第3张图片

sudo systemctl start docker

sudo systemctl enable docker

docker swarm 实验一 docker services 入门_第4张图片

本机3网卡,在enp0s3 192.168.0.127 bridge网卡enp0s8上开始广播

docker swarm init --advertise-addr 192.168.0.127

docker swarm 实验一 docker services 入门_第5张图片

work加入的密码

docker swarm join --token SWMTKN-1-0wlbnf7ezi6d39j7m0sv9912ikzf13f10jgk384ttiuj6ovy88-4sjlkdp9ul3fe353b0iq0q56c 192.168.0.127:2377

clipboard

clipboard

docker node ls

可以发现3台加入集群的机器

clipboard

起一个hello的服务

docker search alpine

docker pull registry.docker-cn.com/library/alpine

docker service create --replicas 1 --name hello busybox

docker swarm 实验一 docker services 入门_第6张图片

毛,registry 不在了?

nginx应该有吧

docker service create --name my_web nginx

docker swarm 实验一 docker services 入门_第7张图片

docker service ls

clipboard

创建一个task

docker service create --name helloworld alpine ping www.baidu.com

docker service ls

clipboard

nginx服务加一个端口

docker service update --publish-add 80 my_web

docker swarm 实验一 docker services 入门_第8张图片

docker service scale my_web=3

docker swarm 实验一 docker services 入门_第9张图片

做错了还可以rollback

docker service update --replicas=5 my_web

docker service update --rollback my_web

docker swarm 实验一 docker services 入门_第10张图片

192.168.0.127-129 3台服务器30000端口都可以访问到nginx的外网NAT端口3000

docker swarm 实验一 docker services 入门_第11张图片

docker swarm 实验一 docker services 入门_第12张图片

docker swarm 实验一 docker services 入门_第13张图片

这30000的端口哪里来的,容我更新下

docker service update \

--publish-add published=80,target=80 \

my_web

docker swarm 实验一 docker services 入门_第14张图片

clipboard

node 80端口可以访问鸟

docker swarm 实验一 docker services 入门_第15张图片

docker network ls

network 有两种,bridge是对外访问的,overlay是容器内部通讯的网络

docker swarm 实验一 docker services 入门_第16张图片

docker network create -d overlay --attachable swarm_test

增加swarm通讯网卡

docker swarm 实验一 docker services 入门_第17张图片

创建服务的时候制定网络

docker service create \
   --replicas 3 \
   --network swarm_test \
   --name my_web2 \
   nginx

docker swarm 实验一 docker services 入门_第18张图片

比较下2个服务的区别

docker service inspect my_web

docker service inspect my_web2

docker swarm 实验一 docker services 入门_第19张图片

走的网络是不一样的



其他docker services的命令

https://docs.docker.com/engine/reference/commandline/service_update/


docker service create

Create a new service

docker service inspect

Display detailed information on one or more services

docker service logs

Fetch the logs of a service or task

docker service ls

List services

docker service ps

List the tasks of one or more services

docker service rm

Remove one or more services

docker service rollback

Revert changes to a service’s configuration

docker service scale

Scale one or multiple replicated services

docker service update

Update a service