zoukankan      html  css  js  c++  java
  • Docker之路-容器编排"swarm+compose"

    创建服务

    我们知道使用 docker-compose.yml可以来一次配置、启动多个容器,在 Swarm 集群中也可以使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务。

    使用 docker service create 一次只能部署一个服务,使用 docker-compose.yml 我们可以一次启动多个关联的服务。

    我们以在 Swarm 集群中部署 WordPress 为例进行说明(官方例子):

    # docker-compose.yml
    version: "3"
    
    services:
      wordpress:
        image: wordpress
        ports:
          - 80:80
        networks:
          - overlay
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: wordpress
        deploy:
          mode: replicated
          replicas: 3
    
      db:
        image: mysql
        networks:
           - overlay
        volumes:
          - db-data:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: somewordpress
          MYSQL_DATABASE: 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
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints: [node.role == manager]
    
    volumes:
      db-data:
    networks:
      overlay:
    

    在该compose文件中定义了3个服务,一个是wordpress服务,一个是worldpress依赖的数据库服务,另外一个是提供一个可视化页面的服务,通过该服务能够从浏览器中很直观的查看集群中各个服务的运行节点。

    swarm中管理管理通过compose启动的服务,需要使用docker stack命令。

    部署服务

    上面我们编写好了docker-compose.yml文件,文件中定义了我们要启动的服务,并且定义了各个服务之前的依赖关系,我们边可以通过该文件来启动一组服务了。

    部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名,最后跟上服务名(自定义,这里为worldpress)。

    [root@node1 /opt/mycontainer/wordpress]# docker stack deploy -c docker-compose.yml wordpress
    Creating network wordpress_overlay
    Creating network wordpress_default
    Creating service wordpress_worldpress
    Creating service wordpress_db
    Creating service wordpress_visualizer
    

    从上面的执行结果可以看到,所有的服务都以"worldpress_x x x"的形式存在,这样是为了避免多个服务组之间的服务名冲突。

    查看刚才启动的服务,可以观察到服务名称叫“wordpress”,服务数量有3个:

    [root@node1 /opt/mycontainer/wordpress]# docker stack  ls
    NAME                SERVICES            ORCHESTRATOR
    wordpress           3                   Swarm
    

    查看每个服务的信息:

    [root@node1 /opt/mycontainer/wordpress]# docker stack services wordpress
    ID                  NAME                   MODE                REPLICAS            IMAGE                             PORTS
    3c8tgiwvncn1        wordpress_visualizer   replicated          1/1                 dockersamples/visualizer:stable   *:8080->8080/tcp
    vgh0g9aoxwgk        wordpress_db           replicated          1/1                 mysql:latest
    wu96zajgvs1v        wordpress_worldpress   replicated          0/3                 worldpress:latest                 *:81->80/tcp
    

    删除服务

    如果要移除服务,那么请使用docker stack down,但是该命令不会移除服务所使用的 数据卷,如果你想移除数据卷请使用 docker volume rm

    [root@node1 /opt/mycontainer/wordpress]# docker stack down wordpress
    Removing service wordpress_db
    Removing service wordpress_visualizer
    Removing service wordpress_worldpress
    Removing network wordpress_overlay
    Removing network wordpress_default
    [root@node1 /opt/mycontainer/wordpress]# ls -1 /var/lib/docker/volumes/
    ...
    metadata.db
    mydata
    registry_registry-data
    wordpress_db_data 	# 数据卷还在
    [root@node1 /opt/mycontainer/wordpress]# docker volume rm wordpress_db_data
    wordpress_db_data
    # 数据卷被删除了
    [root@node1 /opt/mycontainer/wordpress]# ls -1 /var/lib/docker/volumes/
    ...
    metadata.db
    mydata
    registry_registry-data
    
  • 相关阅读:
    HDU2059(龟兔赛跑)
    pat 1012 The Best Rank
    pat 1010 Radix
    pat 1007 Maximum Subsequence Sum
    pat 1005 Sign In and Sign Out
    pat 1005 Spell It Right
    pat 1004 Counting Leaves
    1003 Emergency
    第7章 输入/输出系统
    第六章 总线
  • 原文地址:https://www.cnblogs.com/vinsent/p/11692165.html
Copyright © 2011-2022 走看看