简介

Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。一个使用 Docker 容器的应用,通常由多个容器组成。使用 Docker Compose 不再需要使用 shell 脚本来启动容器。

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

安装

快速安装适合对应系统的最新版的 Docker Compose

1
sudo curl -L "https://github.com/docker/compose/releases/download/$(wget -qO-  "https://api.github.com/repos/docker/compose/releases/latest" | grep "tag_name" | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授权

1
sudo chmod +x /usr/local/bin/docker-compose

查看安装结果

1
docker-compose -v

使用

docker-compose 命令的:

1
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

命令选项

  • -f,–file FILE :指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定;
    • -p,–project-name :NAME 指定项目名称,默认将使用所在目录名称作为项目名;
  • –x-networking :使用 Docker 的可拔插网络后端特性;
  • –x-network-driver :DRIVER 指定网络后端的驱动,默认为 bridge;
  • –verbose :输出更多调试信息
  • -v,–version :打印版本并退出

查看帮助文档

1
docker-compose --help

如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

Usage: docker compose [OPTIONS] COMMAND

Docker Compose

Options:
--ansi string 控制何时打印 ANSI 控制字符,选项
("never"|"always"|"auto") (default "auto")
--compatibility 在向下兼容模式下运行容器
--env-file string 指定备用环境文件
-f, --file stringArray 容器配置文件
--profile stringArray 指定要启用的配置文件
--project-directory string 指定备用工作目录
(默认值:第一个指定的路径的Compose文件)
-p, --project-name string 项目名

Commands:
build 构建或重建服务
convert 将 Docker 命令行转换为 docker-compose 文件格式
cp 在服务容器和本地文件系统之间复制文件/文件夹
create 创建服务
down 停止并移除容器、网络、镜像和数据卷
events 从容器中接收实时的事件
exec 在一个运行中的容器上执行一个命令
images 列出所有镜像
kill 通过发送SIGKILL信号来停止指定服务的容器
logs 从容器中查看服务日志输出
ls 列出正在运行的项目
pause 暂停服务
port 打印绑定的公共端口
ps 列出所有运行中的容器
pull 拉取并下载指定服务镜像
push 推送服务镜像
restart 重启YAML文件中定义的服务
rm 删除指定已经停止服务的容器
run 在一个服务上执行一条命令
start 在容器中启动指定服务
stop 停止已运行的服务
top 显示各个服务容器内运行的进程
unpause 恢复容器服务
up 创建并启动容器
version 显示Docker-Compose版本信息

命令

1、拉取镜像启动容器

一步到位,自动拉取服务依赖的镜像并启动容器

1
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
  • 启动所有服务

docker-compose up

  • 在后台所有启动服务

docker-compose up -d

  • 在后台所有启动服务 -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定

docker-compose -f docker-compose.yml up -d

2、拉取镜像

1
docker-compose pull [options] [SERVICE...]

命令选项[options]

  • --ignore-pull-failures 忽略拉取镜像过程中的错误
  • --parallel 同时拉取多个镜像
  • --quiet 拉取镜像过程中不打印进度信息

3、列出项目中当前的所有容器

1
docker-compose ps [options] [SERVICE...]

4、停止正在运行的容器

1
docker-compose stop [options] [SERVICE...]

5、启动已经存在的服务容器

使用 docker-compose stop 停止的容器可以使用该命令重新启动

1
docker-compose start [SERVICE...]

6、重启项目中的服务

1
docker-compose restart [options] [SERVICE...]

7、删除所有停止状态的服务容器

推荐先执行docker-compose stop命令来停止容器

1
docker-compose rm [options] [SERVICE...]

命令选项[options]

  • -f, --force 强制直接删除包含非停止状态的容器
  • -v 删除容器所挂载的数据卷

8、停止和删除容器、网络、卷、镜像

1
docker-compose down [options]

命令选项 [options]

  • --rmi type 删除镜像类型,类型可选:

    • --rmi all 删除 compose 文件中定义的所有镜像

    • --rmi local 删除镜像名为空的镜像

  • -v, --volumes 删除已经在 compose 文件中定义的和匿名的附在容器上的数据卷

  • --remove-orphans 删除服务中没有在 compose 中定义的容器

9、验证并查看 compose 文件配置

1
docker-compose config [options]

选项参数[options]

  • --resolve-image-digests 将镜像标签标记为摘要
  • -q, --quiet 只验证配置不输出,当配置正确时不输出任何容器,当配置错误时输出错误信息
  • --services 打印服务名称,一行显示一个
  • --volumes 打印数据卷名称,一行显示一个

10、在运行的容器中执行命令

1
docker-compose exec [options] SERVICE COMMAND [ARGS...]

选项参数[options]

  • -d 分离模式,以后台守护进程运行命令。
  • --privileged 获取特权
  • -T 禁用分配 TTY,默认docker-compose exec分配 TTY。
  • --index=index 当一个服务拥有多个容器时可通过该参数登录到该服务下的任何服务