文章目录
一、swarm结合harbor私有仓库
上篇文章中在swarm部署时需要提前在各个节点先拉取镜像,如果配置好私有仓库,直接指定从私有仓库拉取镜像将会大大提升效率
1.启动配置好的harbor仓库
2.在各个节点上配置私有仓库及证书
<1> cat daemon.json %编辑每个节点上的daemon.json文件,配置好私有仓库路径
{
"registry-mirrors": ["https://reg.westos.org"]
}
<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相关命令
docker stack deploy | 部署新的堆栈或更新现有堆栈 |
---|---|
docker stack ls | 列出现有堆栈 |
docker stack ps | 列出堆栈中的任务 |
docker stack rm | 删除一个或多个堆栈 |
docker stack services | 列出堆栈中的服务 |
3.编写compose文件部署服务
[root@server2 compose]# pwd
/root/compose
[root@server2 compose]# ls
docker-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-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:
docker stack deploy -c docker-compose.yml my_cluster %通过指定docker-compose.yml文件部署my_cluster集群
删除原来部署好的服务:
docker service rm viz
docker 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 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" %访问的时候ip加端口
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:
2、下载yml部署文件中的相关镜像并上传到私有仓库,从私有仓库下载更快一点,当然也可以直接从网上下载