• 【Docker】docker swarm集群搭建和相关命令分享


    Docker swarm 集群通过 docker cli 来创建,并通过docker cli来实现应用的部署和集群的管理。

    Docker swarm集群的搭建相对简单,这里使用三台虚拟机(一个管理节点,两个worker节点)来简单演示下集群的搭建过程。

    |-----------------------------------------------------------------|
    |            hostname           |                IP                  |
    |-----------------------------------------------------------------|
    |            master                 |     192.168.223.31       |
    |-----------------------------------------------------------------|
    |            node-01               |     192.168.223.32       |
    |-----------------------------------------------------------------|
    |            node-02               |     192.168.223.33       |
    |-----------------------------------------------------------------|

    虚拟机和docker-ce的安装这里就不做赘述了,安装后关闭系统默认的防火墙,关闭selinux,安装最新的docker-ce-20.10.17,并且修改docker.service,增加下面的参数配置。

    1. # vi /lib/systemd/system/docker.service
    2. 在 ExecStart=/usr/bin/dockerd 后添加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock ,修改后的配置如下所示
    3. [Service]
    4. Type=notify
    5. # the default is not to use systemd for cgroups because the delegate issues still
    6. # exists and systemd currently does not support the cgroup feature set required
    7. # for containers run by docker
    8. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock
    9. 修改后,记得reload配置,并且重启docker服务
    10. # systemctl daemon-reload
    11. # systemctl restart docker.service

    下面就给大家直接贴出我搭建和使用swarm集群过程的相关命令的记录。

    1. ---初始化集群的管理节点
    2. # docker swarm init --advertise-addr 192.168.223.31
    3. Swarm initialized: current node (betygbmft1wkh4kmrf5wx45mc) is now a manager.
    4. To add a worker to this swarm, run the following command:
    5. docker swarm join --token SWMTKN-1-66syvw9yv8xr457lk4eviixyhd5fviw1gg3ktkwa1nkdp2rb44-14530poeryamdfwlssfynmxhk 192.168.223.31:2377
    6. To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    7. ---从节点加入到管理节点
    8. # docker swarm join --token SWMTKN-1-66syvw9yv8xr457lk4eviixyhd5fviw1gg3ktkwa1nkdp2rb44-14530poeryamdfwlssfynmxhk 192.168.223.31:2377
    9. This node joined a swarm as a worker.
    10. ----查看集群的节点、状态
    11. # docker node ls
    12. ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
    13. betygbmft1wkh4kmrf5wx45mc * master Ready Active Leader 20.10.17
    14. nq4urvgyfdjedabze9p5oll6q node-01 Ready Active 20.10.17
    15. t6wtou7b5jm07qltlrp35ha85 node-02 Ready Active 20.10.17
    16. ---创建网络
    17. # docker network create --opt encrypted --driver overlay --attachable webnet
    18. 7e0huckau0g8olzsyvdts8ta2
    19. ---创建nginx服务(1
    20. # docker service create --replicas 2 --network webnet --name nginx --publish published=80,target=80 nginx:1.22.0
    21. gf8n3ad4k1pkxqwej6xpdthhe
    22. overall progress: 2 out of 2 tasks
    23. 1/2: running [==================================================>]
    24. 2/2: running [==================================================>]
    25. verify: Service converged
    26. or
    27. ---创建nginx服务(2
    28. # docker service create --replicas 3 --network webnet --name nginx -p 80:80 nginx:1.22.0
    29. ---查看服务信息
    30. # docker service ls
    31. ID NAME MODE REPLICAS IMAGE PORTS
    32. gf8n3ad4k1pk nginx replicated 2/2 nginx:1.22.0 *:80->80/tcp
    33. ---查看nginx进程
    34. # docker service ps nginx
    35. ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
    36. 4vxulka6ofd2 nginx.1 nginx:1.22.0 master Running Running about a minute ago
    37. res3qre7ywcx nginx.2 nginx:1.22.0 node-01 Running Running 3 minutes ago
    38. ---查看服务明细
    39. # docker service inspect nginx
    40. ---服务扩展
    41. # docker service scale nginx=3
    42. nginx scaled to 3
    43. overall progress: 3 out of 3 tasks
    44. 1/3: running [==================================================>]
    45. 2/3: running [==================================================>]
    46. 3/3: running [==================================================>]
    47. verify: Service converged
    48. # docker service ps nginx
    49. ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
    50. 4vxulka6ofd2 nginx.1 nginx:1.22.0 master Running Running 10 minutes ago
    51. res3qre7ywcx nginx.2 nginx:1.22.0 node-01 Running Running 11 minutes ago
    52. xpwlus8bbo6z nginx.3 nginx:1.22.0 node-02 Running Running 25 seconds ago
    53. ---删除服务
    54. # docker service rm nginx
    55. nginx

    Docker swarm集群的特性

    1)当swarm集群所有节点关机后重启,重启后,之前创建的服务都可以自动启动;

    2)当swarm集群某个从节点宕机,从节点上运行的容器会在其他节点上启动,以确保replicas设置的副本数不变;

    3)当swarm集群只有一个主节点,且该主节点宕机,那么主节点上运行的服务,不会在从节点上再启动,replicas指定的服务副本数将无法得到保障;

    参考:

    https://docs.docker.com/engine/reference/commandline/swarm_init/

    https://docs.docker.com/engine/reference/commandline/swarm_join/

  • 相关阅读:
    Ubuntu22.04安装PostgreSQL
    js filter,every,includes 过滤数组
    11. Jvm运行机制
    数据结构——克鲁斯卡尔(Kruskal)算法
    WordPress主题DUX v8.2源码下载
    场景应用:100亿的数据你怎么排序?昂??你怎么排序啊?你别愣着啊,你说啊?!!!!
    【数据库专家揭秘】MySql数据库设计黄金法则,让你的数据更稳定、更高效!
    前端开发——HTML5新增加的表单属性
    新零售模式这么应用,太牛了
    常用注解@JsonField、@JsonFormat、@DateTimeFormat区别
  • 原文地址:https://blog.csdn.net/cnskylee/article/details/125551551