集群管理
- 1.harbor仓库的部署参考之前的
- 2. docker stack部署
- 3. compose实现集群部属
- 3.1 自己书写compose文件,并删除原有service
- 3.1.1 compose文件,并删除原有service
- 3.1.2 部署
- 3.2 图形化的部署(Portainer 轻量级的 Docker 管理 UI)
- 3.2.1 上传portainer镜像到仓库
- 3.2.2 图形化部署(Portainer可视化)
- 3.2.3 图形化界面的操作
- 3.2.4 创建services
1.harbor仓库的部署参考之前的
2. docker stack部署
- 基于 Docker Swarm 之上来完成应用的部署,面向大规模场景下的多服务部署和管理。
- docker stack与docker-compose的区别:
Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
Docker Compose是一个Python项目,使用Docker API规范来操作容器。
Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。 - docker stack相关命令:
- docker stack deploy -c docker-compose.yml my_cluster
3. compose实现集群部属
3.1 自己书写compose文件,并删除原有service
3.1.1 compose文件,并删除原有service
[root@server2 ~]# mkdir compose
[root@server2 ~]# cd compose/
[root@server2 compose]# ls
[root@server2 compose]# vim docker-compose.yml
[root@server2 compose]# cat docker-compose.yml
version: "3.9"
services:
web:
image: myapp:v1
networks:
- mynet
deploy:
replicas: 6
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
visualizer:
image: visualizer:latest
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints:
- "node.role==manager"
networks:
mynet:
[root@server2 compose]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
jweqsk25yutr my_web replicated 3/3 myapp:v2 *:80->80/tcp
6s15kzvlcdph viz replicated 1/1 dockersamples/visualizer:latest *:8080->8080/tcp
[root@server2 compose]# docker service rm viz
viz
[root@server2 compose]# docker service rm my_web
my_web
[root@server2 compose]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
3.1.2 部署
[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster
3.2 图形化的部署(Portainer 轻量级的 Docker 管理 UI)
##命令形式
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
3.2.1 上传portainer镜像到仓库
[root@server1 ~]# cd portainer/
[root@server1 portainer]# ls
portainer-agent-stack.yml portainer-agent.tar portainer.tar
[root@server1 portainer]# docker load -i portainer-agent.tar
[root@server1 portainer]# docker load -i portainer.tar
[root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/library/agent:latest
[root@server1 portainer]# docker push reg.westos.org/library/agent:latest
[root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/library/portainer:latest
[root@server1 portainer]# docker push reg.westos.org/library/portainer:latest
3.2.2 图形化部署(Portainer可视化)
[root@server1 portainer]# scp portainer-agent-stack.yml server2:/root/compose/ ##发送yml文件到server2
[root@server2 compose]# vim portainer-agent-stack.yml
[root@server2 compose]# cat portainer-agent-stack.yml
version: '3.2'
services:
agent:
image: agent
environment:
# REQUIRED: Should be equal to the service name prefixed by "tasks." when
# deployed inside an overlay network
AGENT_CLUSTER_ADDR: tasks.agent
# AGENT_PORT: 9001
# LOG_LEVEL: debug
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- agent_network
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9000:9000"
volumes:
- portainer_data:/data
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
[root@server2 compose]# docker stack rm my_cluster ##删除自己书写的
[root@server2 compose]# docker stack deploy -c portainer-agent-stack.yml portainer ##部署图形化
3.2.3 图形化界面的操作
新建用户
3.2.4 创建services