Docker swarm 常用命令

  • 服务是自 Docker 1.12 后新引入的概念,并且仅适用于 Swarm 模式。

使用服务仍能够配置大多数熟悉的容器属性,比如容器名、端口映射、接入网络和镜像。此外还增加了额外的特性,比如可以声明应用服务的期望状态,将其告知 Docker 后,Docker 会负责进行服务的部署和管理

#创建服务
# 创建一个服务,生成3个nginx 容器,分别再管理节点和工作节点生成
docker service create --name test_nginx -p 8080:80 --replicas 3 nginx

# --name 服务名称
# -p 暴露端口:管理节点端口:副本内部端口
# --replicas 生成副本的个数

敲击回车键之后,主管理节点会在 Swarm 中实例化 3 个副本,管理节点也会作为工作节点运行。相关各工作节点或管理节点会拉取镜像,然后启动一个运行在 8080 端口上的容器。这还没有结束。所有的服务都会被 Swarm 持续监控,Swarm 会在后台进行轮训检查(Reconciliation Loop),来持续比较服务的实际状态和期望状态是否一致。如果一致,则无须任何额外操作;如果不一致,Swarm 会使其一致。换句话说,Swarm 会一直确保实际状态能够满足期望状态的要求。举例说明,假如运行有 nginx 副本的某个工作节点宕机了,则 nginx 的实际状态从 3 个副本降为 2 个,从而不能满足期望状态的要求。Docker 变回启动一个新的 nginx副本来使实际状态与期望状态保持一致。这一特性功能强大,使得服务在面对节点宕机等问题时具有自愈能力

  • 副本服务 vs 全局服务

服务的默认复制模式(Replication Mode)是副本模式(replicated)。
这种模式会部署期望数量的服务副本,并尽可能均匀地将各个副本分布在整个集群中。
另一种模式是全局模式(global),在这种模式下,每个节点上仅运行一个副本。可以通过给 docker service create 命令传递 --mode global 参数来部署一个全局服务

  • 查看创建的服务
    docker service ls
    image

  • 查看服务的副本和副本状态
    docker service ps 服务ID
    有一个副本在管理节点上,有2个在工作节点上
    image

  • 查看服务更详细的信息
    docker service inspect 服务ID

  • 扩(缩)容

    #扩容,缩容就是减少副本数量就可以了
    docker service scale nginx_test=4
    

image

  • 服务的副本显示为4个了
    image

  • 查看管理节点和工作节点的容器数量
    image

image

image

posted @ 2021-12-16 18:16  弩哥++  阅读(166)  评论(0编辑  收藏  举报