初始化swarm集群
docker swarm init
docker swarm join-token <Token> <Manager-IP>
其中Token分角色(manager和worker)
找回Token
docker swarm join-token manager
docker swarm join-token worker
子节点退出当前集群
docker swarm leave
节点集群管理
docker node ls
docker node inspect
docker node ps
节点角色转换
1.将worker转为manager
docker node promote XXX
2.将manager转为worker
docker node demote XXX
以nginx镜像创建一个服务
docker service create --detach\
--name web \
--publish 8080:80 \
--replicas=3 \
nginx:1.13.1
创建一个网络
docker network create demo --driver overlay
docker service create --help
docker service inspect
docker service ls
docker service rm
一次性查看所有的Task的状态信息
docker service ls -q | xargs -n1 docker service ps
docker service logs
docker service scale web=5
docker service update web --replicas 5
滚动升级
docker service update web --image ningx:1.13.2 \
--update-parallelism 1 --update-delay 3s
滚动升级过程中可以从另外一个端口查看task变化过程
watch 'docker service ps web | grep Running'
docker-compose编排开始
##############################################################################
服务编排
version: "3"
services:
redis:
image: redis:3.2.5
networks:
- demo-net
app:
image: flin/page-hit-counter:v1
ports:
- 5000:5000
depends_on:
- redis
networks:
- demo-net
networks:
demo-net:
external: false
使用如下命令启动
docker-compose up -d
使用如下命令访问,会看到不断递增的访问计数
curl localhost:5000
使用docker-compos命令可以批量地管理这些服务
docker-compose stop
docker-compose有如下命令
up down create start stop restart kill rm pause unpause
images ps logs events exec pull push build run bundle
config prot scale top
services:
webapp:
image: webapp
deploy:
replicas: 4 # 启动4个副本
update_config: # 升级时每次替换2个容器,间隔10s
parallelism: 2
delay: 10s
restart_policy: # 出错退出时自动重启,最多3此,间隔5秒
condition: on-failure
delay: 5s
max_attempts: 3
resources: #限制最大和最小的资源使用量
limits:
cpus: '0.1'
memory: 300M
reservations:
cpus: '0.01'
memory: 100M
services:
webapp:
image: webapp
volumes: # 挂载webapp_volumn存储卷
- webapp_volumn: /opt/app/static
ports: # 指定端口映射
- "3000/udp"
- "8000:8000"
networks: # 假如webapp_network网络
- webapp_network
configs: # 挂载webapp_config外置配置
- webapp_config
secrets: # 挂载webapp_secret密文
- webapp_secret
services:
db:
image: postgres
volumes: # 挂载 data 存储卷
- data:/var/lib/postgresql/data
volumes:
data: # 名称为data的存储卷描述
driver: local
external: false
services:
app:
build: ./app
networks:
- backend # 假如backend网络
networks:
backend: # 名称为 backend 网络的描述
driver: bridge
external: false
services:
app:
build: ./app
configs:
- init_cf # 挂载 init_cf的外置配置
configs:
init_cf:
file: ./init.cf
external: false
services:
app:
build: ./app
secrets:
- app_passwd
secrets:
app_passwd:
file: ./secret_passwd
external: false
docker-compose -f /PATH/TO/MY-COMPOSE-FILE.yaml up -d
可以将运行环境配置或者差异性配置剥离出来,然后指定多个配置文件执行
docker-compose -f /PATH/TO/MY-COMPOSE-FILE.yaml -f docker-compose-dev.yaml up -d
如果服务有调整或者新加服务,执行重新执行docker-compose up -d即可
docker-compose编排结束
##############################################################################
docker stack 应用栈编排开始
##############################################################################
version: "3.3"
services:
redis:
image: redis:3.2.5-alpine
networks:
- demo-net
app:
image: flin/page-hit-counter:v1
ports:
- 5000:5000
depends_on:
- redis
networks:
- demo-net
deploy:
replicas: 2
networks:
demo-net:
driver: overlay
external: false
docker stack deploy -c docker-compose.yml app
只能在docker swarm集群模式执行
docker stack ls
docker stack services
docker stack ps
如果服务升级,只需要修改docker-compose.yml文件,然后重新执行
docker stack deploy -c docker-compose.yml app
删除应用栈
docker stack rm APP
删除服务
docker service rm SERVICE
界面项目
portainer
docker run -d \
--name portainer \
--restart always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/portainer:/data \
portainer/portainer
以服务的方式部署
docker service create \
--detach \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=/opt/portainer,dst=/data \
portainer/portainer
-
« 上一篇:
rabbitmq集群搭建(多机器)
-
使用haprxy进行tcp端口转发
:下一篇 »