文章目录
一、swarm结合harbor私有仓库1.启动配置好的harbor仓库2.在各个节点上配置私有仓库及证书二、docker stack部署1.docker stack与docker-compose的区别2.docker stack相关命令3.编写compose文件部署服务三、结合Portainer可视化一、swarm结合harbor私有仓库
上篇文章中在swarm部署时需要提前在各个节点先拉取镜像,如果配置好私有仓库,直接指定从私有仓库拉取镜像将会大大提升效率
1.启动配置好的harbor仓库
2.在各个节点上配置私有仓库及证书
<1> cat daemon.json%编辑每个节点上的daemon.json文件,配置好私有仓库路径{"registry-mirrors": [""]}<2> scp -r /etc/docker/certs.d/ serverx:/etc/docker/%复制证书到每个节点上的相应目录下<3> 记得每个节点都要加仓库的解析
可以在私有仓库中查询到已经上传的镜像:
配置好私有镜像后swarm部署速度明显提升:
二、docker stack部署
1.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将占主导地位
2.docker stack相关命令
3.编写compose文件部署服务
[root@server2 compose]# pwd/root/compose [root@server2 compose]# lsdocker-compose.yml[root@server2 compose]# cat docker-compose.yml version: '3.9'services:web:image: myapp:v1 networks:- mynet deploy:replicas: 2 %副本个数update_config: parallelism: 2 %每次更新个数delay: 10s %更新时间间隔restart_policy:condition: on-failurevisualizer:image: visualizer:latestports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints:- "node.role == manager"networks:mynet:docker stack deploy -c docker-compose.yml my_cluster %通过指定docker-compose.yml文件部署my_cluster集群删除原来部署好的服务:docker service rm vizdocker service rm my_web
三、结合Portainer可视化
1、yml部署文件下载地址:https://downloads.portainer.io/portainer-agent-stack.yml 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 networkAGENT_CLUSTER_ADDR: tasks.agent# AGENT_PORT: 9001# LOG_LEVEL: debugvolumes:- /var/run/docker.sock:/var/run/docker.sock- /var/lib/docker/volumes:/var/lib/docker/volumesnetworks:- agent_networkdeploy:mode: globalplacement:constraints: [node.platform.os == linux]portainer:image: portainercommand: -H tcp://tasks.agent:9001 --tlsskipverifyports:- "9000:9000" %访问的时候ip加端口volumes:- portainer_data:/datanetworks:- agent_networkdeploy:mode: replicatedreplicas: 1placement:constraints: [node.role == manager]networks:agent_network:driver: overlayattachable: truevolumes:portainer_data:2、下载yml部署文件中的相关镜像并上传到私有仓库,从私有仓库下载更快一点,当然也可以直接从网上下载