Docker之路

创建服务

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

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

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

1# docker-compose.yml 2version: "3" 3 4services: 5 wordpress: 6 image: wordpress 7 ports: 8 - 80:80 9 networks: 10 - overlay 11 environment: 12 WORDPRESS_DB_HOST: db:3306 13 WORDPRESS_DB_USER: wordpress 14 WORDPRESS_DB_PASSWORD: wordpress 15 deploy: 16 mode: replicated 17 replicas: 3 18 19 db: 20 image: mysql 21 networks: 22 - overlay 23 volumes: 24 - db-data:/var/lib/mysql 25 environment: 26 MYSQL_ROOT_PASSWORD: somewordpress 27 MYSQL_DATABASE: wordpress 28 MYSQL_USER: wordpress 29 MYSQL_PASSWORD: wordpress 30 deploy: 31 placement: 32 constraints: [node.role == manager] 33 34 visualizer: 35 image: dockersamples/visualizer:stable 36 ports: 37 - "8080:8080" 38 stop_grace_period: 1m30s 39 volumes: 40 - "/var/run/docker.sock:/var/run/docker.sock" 41 deploy: 42 placement: 43 constraints: [node.role == manager] 44 45volumes: 46 db-data: 47networks: 48 overlay:

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

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

部署服务

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

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

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

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

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

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

查看每个服务的信息:

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

删除服务

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

1[root@node1 /opt/mycontainer/wordpress]# docker stack down wordpress 2Removing service wordpress_db 3Removing service wordpress_visualizer 4Removing service wordpress_worldpress 5Removing network wordpress_overlay 6Removing network wordpress_default 7[root@node1 /opt/mycontainer/wordpress]# ls -1 /var/lib/docker/volumes/ 8... 9metadata.db 10mydata 11registry_registry-data 12wordpress_db_data # 数据卷还在 13[root@node1 /opt/mycontainer/wordpress]# docker volume rm wordpress_db_data 14wordpress_db_data 15# 数据卷被删除了 16[root@node1 /opt/mycontainer/wordpress]# ls -1 /var/lib/docker/volumes/ 17... 18metadata.db 19mydata 20registry_registry-data
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )