Docker swarm 常用的命令集合
#docker swarm#
# 初始化单节点Swarm docker swarm init# 部署测试服务 docker service create --name web --publish 8080:80 --replicas 3 nginx:alpine
# Manager节点初始化(指定IP) docker swarm init --advertise-addr 192.168.1.100# 获取加入令牌 MANAGER_TOKEN=$(docker swarm join-token -q manager) WORKER_TOKEN=$(docker swarm join-token -q worker)# Worker节点加入 docker swarm join --token $WORKER_TOKEN 192.168.1.100:2377
# 查看节点状态 docker node ls# 提升Worker为Manager docker node promote worker-node1# 排空节点(停止新任务分配) docker node update --availability drain node-2
# 创建服务 docker service create \--name redis \--replicas 3 \--publish published=6379,target=6379 \--limit-cpu 1 \redis:6-alpine# 查看服务列表 docker service ls# 扩缩容服务 docker service scale redis=5# 删除服务 docker service rm redis
# 服务更新策略 docker service update \--image redis:7-alpine \--update-parallelism 2 \--update-delay 10s \--update-failure-action rollback \--rollback-parallelism 1 \--rollback-delay 5s \redis
# 每个节点运行一个监控代理 docker service create \--mode global \--name node-exporter \--mount type=bind,source=/proc,target=/host/proc \prom/node-exporter
# 创建自定义Overlay网络 docker network create -d overlay \--subnet 10.1.0.0/24 \--gateway 10.1.0.1 \--opt encrypted \my-overlay# 服务使用自定义网络 docker service create \--name api \--network my-overlay \--network ingress \--publish 8080:80 \my-api:latest
# 创建命名卷 docker volume create app-data# 服务使用卷 docker service create \--name db \--mount source=app-data,target=/var/lib/mysql \--replicas 3 \mysql:8.0
# 创建密钥 echo "db_password" | docker secret create db_pass -# 服务使用密钥 docker service create \--name db \--secret db_pass \-e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_pass \mysql:8.0
# 创建配置 docker config create nginx.conf ./nginx.conf# 服务使用配置 docker service create \--name web \--config source=nginx.conf,target=/etc/nginx/nginx.conf \nginx:alpine
# 部署全局监控 docker service create --mode global \--name cadvisor \--mount type=bind,source=/,target=/rootfs,readonly=true \--mount type=bind,source=/var/run,target=/var/run \google/cadvisor:latest
# 资源限制策略 docker service create \--name api \--reserve-cpu 0.5 \--reserve-memory 256M \--limit-cpu 2 \--limit-memory 1G \my-api:v1
# 备份Swarm状态 docker swarm init --force-new-cluster --advertise-addr 192.168.1.100# 恢复节点 docker node update --availability active node-2
# 查看服务详情 docker service inspect --pretty web# 查看服务日志 docker service logs -f web# 查看容器状态 docker service ps web
# 检查网络连通性 docker exec -it <container> ping <target># 检查DNS解析 docker exec -it <container> nslookup service_name
# 查看节点详情 docker node inspect <node_id> --pretty# 检查节点资源 docker node ps <node_id>
# 创建v1版本 docker service create --name app --replicas 5 my-app:v1# 逐步替换为v2 docker service update \--image my-app:v2 \--update-parallelism 1 \--update-delay 30s \app
# 安装自动扩缩组件 docker plugin install --alias scaler docker/scale# 设置扩缩规则 docker service scale \--min 2 \--max 10 \--step 1 \--scale-on-cpu 80 \web
# .gitlab-ci.yml 示例 deploy:stage: deployscript:- docker stack deploy -c docker-compose.prod.yml myapponly:- master