一、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部署文件中的相关镜像并上传到私有仓库,从私有仓库下载更快一点,当然也可以直接从网上下载

在这里插入图片描述
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐