swarm init 创建集群
然后会打印出 swarm join ,在另一台机器上输入
查看集群
bash
docker node ls
解散集群 swarm node leave --forece
部署
bash
# 创建网络
docker network create --driver=overlay --subnet=10.110.1.0/24 blocknet
docker stack deploy -c docker-compose.yml mystack
docker-compose.yml 如下
yaml
version: '3'
services:
supervisor:
image: emulator:latest
cap_add:
- NET_ADMIN
deploy:
placement:
constraints:
- node.id == ex1gf143dc9cvvd778fzca6os
volumes:
- /home/rkzhang/image/emulator_mount:/root/emulator_mount
ports:
- "52100:22"
networks:
- blocknet
node0:
image: emulator:latest
cap_add:
- NET_ADMIN
deploy:
placement:
constraints:
- node.id == 9yypexmyozsgaayzw38ntkahm
volumes:
- /home/dd/emulator_mount:/root/emulator_mount
ports:
- "50000:22"
networks:
- blocknet
node1:
image: emulator:latest
cap_add:
- NET_ADMIN
deploy:
placement:
constraints:
- node.id == ex1gf143dc9cvvd778fzca6os
volumes:
- /home/rkzhang/image/emulator_mount:/root/emulator_mount
ports:
- "50001:22"
networks:
- blocknet
networks:
blocknet:
external: true
name: blocknet
bash
docker service ls
hostname 和 servicename 不一致
在docker network inspect 命令中可以查看每个容器的ip(如果指定了ip网段)
但是使用 ip addr show 和 dig dns解析出来的ip 不一致,是因为使用了 vip 通信。
可以使用 tasks.<service-name>
,这样解析出来 service-name的ip就是容器的 ip addr show的ip 也和docker network inspect中的ip一致