本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

在我们启动容器的时候经常要使用docker run 指定很多参数,当我们需要管理很多容器时,使用这样的方式会给我们的运维人员带来很大的负担,docker compose容器编排工具无疑是解决这个一问题的利器。

Docker Compose是用来管理多容器应用的工具,我们可以使用compose file 文件来配置容器的应用和服务,编写好compose file 文件以后,我们只需要使用一条简单的命令就可以创建并启动我们需要的应用。

使用compose一般有三个步骤:
1、编写Dockerfile,定义镜像的构建参数。

2、编写docker-compose.yml文件,定义应用的挂载,环境变量,启动参数等。

3、执行 docker-compose up 命令,自动执行构建镜像并启动容器和应用。

安装Compose

这里只介绍Linux环境下的安装。

执行如下命令:

可以根据的自己的需求安装不同的版本,修改链接中的版本号即可。也可以直接去 https://github.com/docker/compose/releases 上下载需要的版本。

对文件添加执行权限:

Compose file 常用语法介绍

compose使用的是YAML格式的文件,我们可以使用它来定义服务、网络和卷。compose file的固定命名为 docker-compose.yml。

这里只列出常用的信息,具体用法参考: https://docs.docker.com/compose/compose-file/

build : 构建镜像,指定构建的路径,文件,源镜像等信息。

MAINTAINER trying tryingstuff@163.com
RUN rpm -ivh http: //mirrors .aliyun.com /epel/epel-release-latest-7 .noarch.rpm RUN yum install nginx -y RUN sed -i 'N;6adaemon off;' /etc/nginx/nginx .conf ADD index.html /usr/share/nginx/html/index .html
EXPOSE 80
CMD [ "nginx" ]

文件说明:

a. 指定compose版本为v2,建议使用v2 或v3版本,如果不指定,默认会使用v1版本,语法会不兼容。

b. web-nginx定义了服务的名称,如果没有后面image参数指定,镜像名称会默认以 当前路径_服务名 命名如(web_web-nginx)。

c. build: . 表示构建路径为当前路径。

d. image 指定了构建之后的镜像名称,如果没有build行为,则表示当前镜像库中已有的镜像。

e. ports 表示映射端口 宿主机端口:容器端口

f. volumes表示容器挂载的宿主机目录。


3、在当前目录运行docker-compose命令, 如果不使用-d 选项,compose运行之后会一直驻留在前台,终止compose后容器也会停止。

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
trying /nginx-com v1                  ec2f0106598a        21 minutes ago      401 MB
centos              latest              36540f359ca3        13 days ago         193 MB
# docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                NAMES
eac73ff1bbef        trying /nginx-com :v1 "nginx" 22 minutes ago      Up 22 minutes       0.0.0.0:80->80 /tcp web-compose