https://www.udemy.com/share/101u3o/ https://github.com/BretFisher/dogvscat https://labs.play-with-docker.com/
docker swarm initdocker swarm init --advertise-addrdocker swarm join --token SWMTKN-1-82i5lntwh2p1oyeotu68dgz6k ip:2377docker node lsdocker node update --role manger node1docker node psdocker service create --replicas 3 alpine ping 8.8.8.8docker service lsdocker service ps namedocker network create --driver overlay acdiostdrupaldocker service create --name psql --network acdiostdrupal -e POSTGRES_PASSWORD=acdiost postgresdocker container logs psql*docker service create --name drupal --network acdiostdrupal -p 80:80 drupal# 网络负载均衡docker service create --name es --replicas 3 -p 9200:9200 elasticsearch:2
Drupal安装配置
docker stack deploy -c filename.yml namedocker stack lsdocker stack ps namedocker stack services namedocker stack rm name
投票app配置文件
version: "3"services:redis:image: redis:alpinenetworks:- frontenddeploy:replicas: 1update_config:parallelism: 2delay: 10srestart_policy:condition: on-failuredb:image: postgres:9.6environment:POSTGRES_USER: "postgres"POSTGRES_PASSWORD: "postgres"POSTGRES_HOST_AUTH_METHOD: trustnetworks:- backenddeploy:placement:constraints: [node.role == manager]vote:image: dockersamples/examplevotingapp_vote:beforeports:- 5000:80networks:- frontenddepends_on:- redisdeploy:replicas: 2update_config:parallelism: 2restart_policy:condition: on-failureresult:image: dockersamples/examplevotingapp_result:beforeports:- 5001:80networks:- backenddepends_on:- dbdeploy:replicas: 1update_config:parallelism: 2delay: 10srestart_policy:condition: on-failureworker:image: dockersamples/examplevotingapp_workernetworks:- frontend- backenddepends_on:- db- redisdeploy:mode: replicatedreplicas: 1labels: [APP=VOTING]restart_policy:condition: on-failuredelay: 10smax_attempts: 3window: 120splacement:constraints: [node.role == manager]visualizer:image: dockersamples/visualizerports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints: [node.role == manager]networks:frontend:backend:

version: "3.1"
services:
psql:
image: postres
secrets:
- psql_user
- psql_password
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/psql_password
POSTGRES_USER_FILE: /run/sectests/psql_user
secrets:
psql_user:
file: ./psql_user.txt
psql_password:
file: ./psql_password.txt
# secret 限制大小为 500kb ,版本为 3.1 以上
docker secret create psql_user psql_user.txt
echo 'password' | docker secret create psql_pass -
docker secret ls
docker secret inspect name
docker service create --name psql \
--secret psql_user --secret psql_pass \
-e POSTGRES_PASSWORD_FILE=/run/secrets/psql_password \
-e POSTGRES_USER_FILE=/run/sectests/psql_user
docker service update --secret-rm
docker-compose -f name1.yml -f name2.yml up -d
docker-compose -f name1.yml -f name2.yml config > output.yml
# 创建服务
docker service create -p 80:80 --name web nginx:1.13.7
# 扩容
docker service scale web=5
# 版本更新
docker service update --image nginx:1.13.6 web
# 更新端口
docker service update --publish-rm 80 --publish-add 8090:80 web
# 重新分配节点,作用是可以利用空闲的服务器
docker service update --force web
健康检查
# 基于命令的健康检查
docker container run --name p2 -d --health-cmd="pg_isready -U postgres || exit 1" postgres
# 审查容器可以看到健康检查的返回结果
docker inspect 容器
# 基于服务的健康检查
docker service create --name p2 --health-cmd="pg_isready -U postgres || exit 1" postgres
服务约束
docker service create --constraint=node.role==manager nginx
docker service create --constraint=node.role!=work nginx
# 添加标签
docker node update --label-add=dmz=true node2
docker service create --constraint=node.labels.dmz==true nginx
# 修改约束
docker service update --constraint-rm node.role==worker --constraint-add node.role==manager app1
服务模式
docker service create --mode=global nginx
docker service create --mode=global --constraint=node.role==work nginx
放置首选项
docker service create --placement-pref spread=node.labels.xxx --replicas 3 nginx
--placement-pref-add spread=
--placement-pref-rm spread=
