Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器 Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。

服务编排工具使得Docker应用管理更为方便快捷。

Docker Compose网站:https://docs.docker.com/compose

使用 基本上是三个步骤:

1.定义

2.编写

3.最后运行 启动服务

系统环境

Ubuntu 17.04 x64

Docker CE: 17.12.0-ce

Docker Compose: 1.18.0

参考-https://docs.docker.com/compose/install/#prerequisites

在Linux上,您可以从GitHub上的Compose存储库版本页面下载Docker Compose 最新二进制文件

Compose 安装

运行此命令下载最新版本的

对二进制文件应用可执行权限

验证

卸载

要卸载 Docker Compose,如果使用 curl 以下安装:

入门示例WordPress

使用 可以轻松地在 容器中,构建独立环境运行的 ,在开始之前必须安装 。

编写配置

1.创建一个空的项目目录。

新建一个你能记住的目录,这个目录是应用镜像的上下文,该目录用于存放构建该镜像的资源

在这个目录里面将会新建一个 文件

2.进入 目录

3.创建一个 文件,将启动您的 博客和一个单独的 实例并挂载数据持久化到宿主机

内容如下

image

指定服务的镜像名称或镜像 , 。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。

所以我们不需要先拉取镜像

volumes

指 实例挂载数据持久化到宿主机

PS

以上命令的意思是新建 和 容器。等同于: 内容

启动服务

如果看到如下信息就证明没毛病

查看容器

查看镜像

访问服务

编写参考

每个 必须定义 或者 中的一个,其它的是可选的。

image

指定镜像 或者 。示例:

注意,在 里同时使用image和build是不允许的, 则可以,如果同时指定了两者,会将 出来的镜像打上名为 标签。

build

用来指定一个包含 文件的路径。一般是当前目录. 并生成一个随机命名的镜像。

实例

Dockerfile内容

docker-compose.yml内容

是放 的路径

用于暴露端口 同

command

用来覆盖缺省命令。示例:

也支持数组形式

links

用于链接另一容器服务,如需要使用到另一容器的mysql服务。可以给出服务名和别名;也可以仅给出服务名,这样别名将和服务名相同。

同 。示例:

使用了别名将自动会在容器的/etc/hosts文件里创建相应记录:

所以我们在容器里就可以直接使用别名作为服务的主机名。

ports

用于暴露端口。同 。

示例:

expose

提供 之间的端口访问,不会暴露给主机使用。同 。

volumes

挂载数据卷。同 。

示例:

进入MySQL容器

查看容器ID

通过容器ID进入MySQL容器

进入MySQL容器的存储目录

新建一个文本,用于测试MySQL容器的挂载目录,有没有同步到宿主机

宿主机查看容器挂载是否同步

volumes_from

挂载数据卷容器,挂载是容器。同 。示例:

格式仅支持 。

environment

添加环境变量。同 。可以是数组或者字典格式:

depends_on

用于指定服务依赖,一般是 等。 指定了依赖,将会优先于服务创建并启动依赖。

也可以指定依赖。

external_links

链接搭配 文件或者 之外定义的服务,通常是提供共享或公共服务。格式与 相似:

注意, 链接的服务与当前服务必须是同一个网络环境。

extra_hosts

添加主机名映射。

将会在 创建记录:

extends

继承自当前 文件或者其它文件中定义的服务,可以选择性的覆盖原有配置。

必须有, 可选。 是需要继承的服务,例如 、 。

net

设置网络模式。同 的 参数。

dns

自定义dns服务器。

更多

cpushares, cpuquota, cpuset, domainname, hostname, ipc, macaddress, memlimit, memswaplimit, privileged, readonly, restart, shmsize, stdinopen, tty, user, working_dir

这些命令都是单个值,含义请参考

编写 docker-compose 请参考官方文档

Compose file version 3

https://docs.docker.com/compose/compose-file/

Compose file version 2

https://docs.docker.com/compose/compose-file/compose-file-v2/

Compose file version 1

https://docs.docker.com/compose/compose-file/compose-file-v1/

参考

https://docs.docker.com/compose/overview/

https://docs.docker.com/compose/

Contact

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180119G0947800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券