Docker Swarm Mode 学习笔记 (部署服务)

使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点上执行。

新建服务

docker service create --replicas 3 -p 80:80 --name nginx nginx:latest

解释一下这条命令:

--replicas 3 : 任务数量

-p 80:80 :配置节点与容器端口映射

--name nginx :服务名称

nginx:latest: 镜像名与版本, 与启动容器一致

查看服务

查看当前 Swarm 集群运行的服务: docker service ls

查看单个服务详情: docker service ps 服务名

查看单个服务日志: docker service logs 服务名

删除服务

docker service rm 服务名

在 Swarm 集群中使用 compose 文件

docker-compose.yml 文件不仅仅可以用来编排,启动一组容器,也同样可以用来在 Swarm 集群中编排,启动多个服务。

例子:(注释很详细)

version: "3"

services:
    wordpress:                                              # 声明 wordpress 服务
        image: wordpress                                     # 基于 wordpress 镜像
        ports:                                              # 配置服务与节点之间的端口映射
            - 80:80
        networks:                                           # 设置使用的网络
            - overlay
        environment:                                        # 设置环境变量
            WORDPRESS_DB_HOST: db:3306                        # 设置 wordpress 使用的数据库地址
            WORDPRESS_DB_USER: wordpress                      # 设置 wordpress 数据库访问用户
            WORDPRESS_DB_PASSWORD: wordpress                   # 设置 wordpress 数据库访问密码
        deploy:                                             # 设置服务发布模式
            mode: replicated                                 # 每个工作节点都会运行一个服务
            replicas: 3                                      # 设置 3 个分片
    db:
        image: mysql
            networks:
                - overlay
            volumes:                                  # 设置数据卷, 数据卷不会因为服务的移除而删除
                - db-data:/var/lib/mysql
            environment:
                MYSQL_ROOT_PASSWORD: somewordpress      # 这里做的 mysql 数据库设置均置的相对应
                MYSQL_DATABASE: wordpress              #  与 wordpress 服务中设置相匹配
                MYSQL_USER: wordpress
                MYSQL_PASSWORD: wordpress
            deploy:
                placement:                                # 服务发布条件
                    constraints: [node.role == manager]     # 只在管理节点上发布此服务
    visualizer:
        image: dockersamples/visualizer:stable
        ports:
            - "8080:8080"
        stop_grace_period: 1m30s                        # 在收到服务停止信号之后的 1分30秒后退出容器
        volumes:
            - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
            placement:
                constraints: [node.role == manager]         # 只在管理节点上发布此服务
volumes:
    db-data:                                            # 创建数据卷
networks:
    overlay:                                            # 创建网络

部署服务:

docker stack deploy -c docker-compose.yml wordpress

移除服务:

docker stack rm wordpress 此命令不会移除数据卷。

上一篇:Docker Swarm Mode 学习笔记(聊聊 replicas)


下一篇:docker 1-->docker swarm 转载