集群管理

  • 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

windows可视化docker docker集群可视化管理_stack


windows可视化docker docker集群可视化管理_stack_02

windows可视化docker docker集群可视化管理_portaine_03

3.1.2 部署

[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster

windows可视化docker docker集群可视化管理_stack_04


windows可视化docker docker集群可视化管理_docker_05


windows可视化docker docker集群可视化管理_windows可视化docker_06


windows可视化docker docker集群可视化管理_windows可视化docker_07

3.2 图形化的部署(Portainer 轻量级的 Docker 管理 UI)

portainer下载地址

##命令形式
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

windows可视化docker docker集群可视化管理_stack_08

windows可视化docker docker集群可视化管理_compose_09

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    ##部署图形化

windows可视化docker docker集群可视化管理_windows可视化docker_10


windows可视化docker docker集群可视化管理_docker_11


windows可视化docker docker集群可视化管理_stack_12


windows可视化docker docker集群可视化管理_docker_13

3.2.3 图形化界面的操作

新建用户

windows可视化docker docker集群可视化管理_docker_14


windows可视化docker docker集群可视化管理_compose_15


windows可视化docker docker集群可视化管理_windows可视化docker_16


windows可视化docker docker集群可视化管理_portaine_17


windows可视化docker docker集群可视化管理_docker_18


windows可视化docker docker集群可视化管理_stack_19

3.2.4 创建services

windows可视化docker docker集群可视化管理_compose_20


windows可视化docker docker集群可视化管理_docker_21


windows可视化docker docker集群可视化管理_stack_22


windows可视化docker docker集群可视化管理_windows可视化docker_23


windows可视化docker docker集群可视化管理_compose_24