docker swarm 是一个docker宿主管理软件,还有k8s和mesos 作为同类容器管理软件,在docker 10.15之后合并进docker 不用单独在安装了
https://docs.docker.com/engine/swarm/services/
VirtualBox 开3个虚拟机
主机清单
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
sudo systemctl start docker
sudo systemctl enable docker
本机3网卡,在enp0s3 192.168.0.127 bridge网卡enp0s8上开始广播
docker swarm init --advertise-addr 192.168.0.127
work加入的密码
docker swarm join --token SWMTKN-1-0wlbnf7ezi6d39j7m0sv9912ikzf13f10jgk384ttiuj6ovy88-4sjlkdp9ul3fe353b0iq0q56c 192.168.0.127:2377
docker node ls
可以发现3台加入集群的机器
起一个hello的服务
docker search alpine
docker pull registry.docker-cn.com/library/alpine
docker service create --replicas 1 --name hello busybox
毛,registry 不在了?
nginx应该有吧
docker service create --name my_web nginx
docker service ls
创建一个task
docker service create --name helloworld alpine ping www.baidu.com
docker service ls
nginx服务加一个端口
docker service update --publish-add 80 my_web
docker service scale my_web=3
做错了还可以rollback
docker service update --replicas=5 my_web
docker service update --rollback my_web
192.168.0.127-129 3台服务器30000端口都可以访问到nginx的外网NAT端口3000
这30000的端口哪里来的,容我更新下
docker service update \
--publish-add published=80,target=80 \
my_web
node 80端口可以访问鸟
docker network ls
network 有两种,bridge是对外访问的,overlay是容器内部通讯的网络
docker network create -d overlay --attachable swarm_test
增加swarm通讯网卡
创建服务的时候制定网络
docker service create \
--replicas 3 \
--network swarm_test \
--name my_web2 \
nginx
比较下2个服务的区别
docker service inspect my_web
docker service inspect my_web2
走的网络是不一样的
其他docker services的命令
https://docs.docker.com/engine/reference/commandline/service_update/
Create a new service
Display detailed information on one or more services
Fetch the logs of a service or task
List services
List the tasks of one or more services
Remove one or more services
Revert changes to a service’s configuration
Scale one or multiple replicated services
Update a service