docker-swarm
创建节点
创建manager
docker swarm init --advertise-addr=192.168.2.175
# advertise-addr为本机地址
此时会打印如下内容
Swarm initialized: current node (exv40dk2y1hbas9cy8fin3tau) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-477u3suyz9efxxl7t0215y9muwmk4xxhowhruksmrr9u3ylbi5-40knfzidfgpta4uq4rxr6yfqy 192.168.2.175:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
创建worker
在另外一台主机上创建worker节点只要将上面打印的
docker swarm join --token SWMTKN-1-477u3suyz9efxxl7t0215y9muwmk4xxhowhruksmrr9u3ylbi5-40knfzidfgpta4uq4rxr6yfqy 192.168.2.175:2377
复制运行就可以了
在manager主机上查看节点
docker node list
重命名节点名称
hostnamectl set-hostname 名称
service docker restart
service 的操作
查看所有节点
docker node list
创建service
docker service create --name demo --network demo busybox sh -c "while true;do sleep 3600;done"
查看service
docker service ls
查看单独的service
docker service ps demo
docker stack 的操作
docker stack是用来管理 service
创建stack
docker stack deploy cloud-demo --compose-file=docker-compose.yml
删除stack
docker stack rm cloud-demo
查看stack
docker stack ls
查看具体的service
docker stack services cloud-demo
docker-compose.yml具体例子
version: '3'
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-overlay
deploy:
mode: global # 表示不能横向扩展
placement:
constraints:
- node.role == manager # 只能部署在manager的节点上
web:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_PASSWORD: root
networks:
- my-overlay
deploy:
mode: replicated
replicas: 3 # 横向扩展3个
restart_policy:
condition: on-failure # 启动失败的策略为重启
delay: 5s
max_attempts: 3
update_config: # 更新策略
parallelism: 1 # 同时更新的个数
delay: 10s # 更新间隔时间
visualizer:
image: dockersamples/visualizer
ports:
- "8081:8080"
stop_grace_period: 1m30s
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
placement:
constraints:
- node.role == manager
volumes:
mysql-data:
networks:
my-overlay:
driver: overlay