Skip to content

Commit 6cd1cad

Browse files
committed
compose v2
Signed-off-by: Kang Huaishuai <khs1994@khs1994.com>
1 parent 85be300 commit 6cd1cad

19 files changed

+70
-140
lines changed

CHANGELOG.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# 修订记录
22

3-
* 1.3.0 2021-YY-DD
3+
* 1.4.0 2022-MM-DD
4+
* 以 Docker Compose v2 为例介绍 compose
5+
6+
* 1.3.0 2021-12-02
47
* 全面支持 Docker v20.10 新版本
58
* 新增 Docker Compose v2
69
* Docker Hub 自动构建转为付费功能

SUMMARY.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* [Raspberry Pi](install/raspberry-pi.md)
1919
* [Linux 离线安装](install/offline.md)
2020
* [macOS](install/mac.md)
21-
* [Windows 10](install/windows.md)
21+
* [Windows 10/11](install/windows.md)
2222
* [镜像加速器](install/mirror.md)
2323
* [开启实验特性](install/experimental.md)
2424
* [使用镜像](image/README.md)
@@ -82,7 +82,6 @@
8282
* [使用 buildx 构建多种系统架构支持的 Docker 镜像](buildx/multi-arch-images.md)
8383
* [Docker Compose](compose/README.md)
8484
* [简介](compose/introduction.md)
85-
* [Compose v2](compose/v2.md)
8685
* [安装与卸载](compose/install.md)
8786
* [使用](compose/usage.md)
8887
* [命令说明](compose/commands.md)
@@ -143,7 +142,7 @@
143142
* [Debian Ubuntu](cases/os/debian.md)
144143
* [CentOS Fedora](cases/os/centos.md)
145144
* [本章小结](cases/os/summary.md)
146-
* [实战案例 - CI/CD](cases/ci/README.md)
145+
* [CI/CD](cases/ci/README.md)
147146
* [GitHub Actions](cases/ci/actions/README.md)
148147
* [Drone](cases/ci/drone/README.md)
149148
* [部署 Drone](cases/ci/drone/install.md)

buildx/buildkit.md

-4
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,6 @@ $ ssh-add ~/.ssh/id_rsa
145145
$ docker build -t test --ssh default=$SSH_AUTH_SOCK .
146146
```
147147

148-
## docker-compose build 使用 Buildkit
149-
150-
设置 `COMPOSE_DOCKER_CLI_BUILD=1` 环境变量即可使用。
151-
152148
## 官方文档
153149

154150
* https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md

cases/ci/drone/install.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,5 @@ DRONE_GITHUB_CLIENT_SECRET=
8282
### 启动 Drone
8383

8484
```bash
85-
$ docker-compose up -d
85+
$ docker compose up -d
8686
```

compose/commands.md

+29-49
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
66

7-
执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。
7+
执行 `docker compose [COMMAND] --help` 可以查看具体某个命令的使用格式。
88

9-
`docker-compose` 命令的基本的使用格式是
9+
`docker compose` 命令的基本的使用格式是
1010

1111
```bash
12-
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
12+
docker compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
1313
```
1414

1515
## 命令选项
@@ -26,13 +26,13 @@ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
2626

2727
### `build`
2828

29-
格式为 `docker-compose build [options] [SERVICE...]`
29+
格式为 `docker compose build [options] [SERVICE...]`
3030

3131
构建(重新构建)项目中的服务容器。
3232

3333
服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。
3434

35-
可以随时在项目目录下运行 `docker-compose build` 来重新构建服务。
35+
可以随时在项目目录下运行 `docker compose build` 来重新构建服务。
3636

3737
选项包括:
3838

@@ -64,33 +64,33 @@ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
6464

6565
### `kill`
6666

67-
格式为 `docker-compose kill [options] [SERVICE...]`
67+
格式为 `docker compose kill [options] [SERVICE...]`
6868

6969
通过发送 `SIGKILL` 信号来强制停止服务容器。
7070

7171
支持通过 `-s` 参数来指定发送的信号,例如通过如下指令发送 `SIGINT` 信号。
7272

7373
```bash
74-
$ docker-compose kill -s SIGINT
74+
$ docker compose kill -s SIGINT
7575
```
7676

7777
### `logs`
7878

79-
格式为 `docker-compose logs [options] [SERVICE...]`
79+
格式为 `docker compose logs [options] [SERVICE...]`
8080

81-
查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。
81+
查看服务容器的输出。默认情况下,docker compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。
8282

8383
该命令在调试问题的时候十分有用。
8484

8585
### `pause`
8686

87-
格式为 `docker-compose pause [SERVICE...]`
87+
格式为 `docker compose pause [SERVICE...]`
8888

8989
暂停一个服务容器。
9090

9191
### `port`
9292

93-
格式为 `docker-compose port [options] SERVICE PRIVATE_PORT`
93+
格式为 `docker compose port [options] SERVICE PRIVATE_PORT`
9494

9595
打印某个容器端口所映射的公共端口。
9696

@@ -102,7 +102,7 @@ $ docker-compose kill -s SIGINT
102102

103103
### `ps`
104104

105-
格式为 `docker-compose ps [options] [SERVICE...]`
105+
格式为 `docker compose ps [options] [SERVICE...]`
106106

107107
列出项目中目前的所有容器。
108108

@@ -112,7 +112,7 @@ $ docker-compose kill -s SIGINT
112112

113113
### `pull`
114114

115-
格式为 `docker-compose pull [options] [SERVICE...]`
115+
格式为 `docker compose pull [options] [SERVICE...]`
116116

117117
拉取服务依赖的镜像。
118118

@@ -126,7 +126,7 @@ $ docker-compose kill -s SIGINT
126126

127127
### `restart`
128128

129-
格式为 `docker-compose restart [options] [SERVICE...]`
129+
格式为 `docker compose restart [options] [SERVICE...]`
130130

131131
重启项目中的服务。
132132

@@ -136,9 +136,9 @@ $ docker-compose kill -s SIGINT
136136

137137
### `rm`
138138

139-
格式为 `docker-compose rm [options] [SERVICE...]`
139+
格式为 `docker compose rm [options] [SERVICE...]`
140140

141-
删除所有(停止状态的)服务容器。推荐先执行 `docker-compose stop` 命令来停止容器。
141+
删除所有(停止状态的)服务容器。推荐先执行 `docker compose stop` 命令来停止容器。
142142

143143
选项:
144144

@@ -147,14 +147,14 @@ $ docker-compose kill -s SIGINT
147147
* `-v` 删除容器所挂载的数据卷。
148148

149149
### `run`
150-
格式为 `docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`
150+
格式为 `docker compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`
151151

152152
在指定服务上执行一个命令。
153153

154154
例如:
155155

156156
```bash
157-
$ docker-compose run ubuntu ping docker.com
157+
$ docker compose run ubuntu ping docker.com
158158
```
159159

160160
将会启动一个 ubuntu 服务容器,并执行 `ping docker.com` 命令。
@@ -172,7 +172,7 @@ $ docker-compose run ubuntu ping docker.com
172172
如果不希望自动启动关联的容器,可以使用 `--no-deps` 选项,例如
173173

174174
```bash
175-
$ docker-compose run --no-deps web python manage.py shell
175+
$ docker compose run --no-deps web python manage.py shell
176176
```
177177

178178
将不会启动 web 容器所关联的其它容器。
@@ -199,37 +199,17 @@ $ docker-compose run --no-deps web python manage.py shell
199199

200200
* `-T` 不分配伪 tty,意味着依赖 tty 的指令将无法运行。
201201

202-
### `scale`
203-
204-
格式为 `docker-compose scale [options] [SERVICE=NUM...]`
205-
206-
设置指定服务运行的容器个数。
207-
208-
通过 `service=num` 的参数来设置数量。例如:
209-
210-
```bash
211-
$ docker-compose scale web=3 db=2
212-
```
213-
214-
将启动 3 个容器运行 web 服务,2 个容器运行 db 服务。
215-
216-
一般的,当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。
217-
218-
选项:
219-
220-
* `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。
221-
222202
### `start`
223203

224-
格式为 `docker-compose start [SERVICE...]`
204+
格式为 `docker compose start [SERVICE...]`
225205

226206
启动已经存在的服务容器。
227207

228208
### `stop`
229209

230-
格式为 `docker-compose stop [options] [SERVICE...]`
210+
格式为 `docker compose stop [options] [SERVICE...]`
231211

232-
停止已经处于运行状态的容器,但不删除它。通过 `docker-compose start` 可以再次启动这些容器。
212+
停止已经处于运行状态的容器,但不删除它。通过 `docker compose start` 可以再次启动这些容器。
233213

234214
选项:
235215

@@ -241,27 +221,27 @@ $ docker-compose scale web=3 db=2
241221

242222
### `unpause`
243223

244-
格式为 `docker-compose unpause [SERVICE...]`
224+
格式为 `docker compose unpause [SERVICE...]`
245225

246226
恢复处于暂停状态中的服务。
247227

248228
### `up`
249229

250-
格式为 `docker-compose up [options] [SERVICE...]`
230+
格式为 `docker compose up [options] [SERVICE...]`
251231

252232
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
253233

254234
链接的服务都将会被自动启动,除非已经处于运行状态。
255235

256236
可以说,大部分时候都可以直接通过该命令来启动一个项目。
257237

258-
默认情况,`docker-compose up` 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
238+
默认情况,`docker compose up` 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
259239

260240
当通过 `Ctrl-C` 停止命令时,所有容器将会停止。
261241

262-
如果使用 `docker-compose up -d`,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
242+
如果使用 `docker compose up -d`,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
263243

264-
默认情况,如果服务容器已经存在,`docker-compose up` 将会尝试停止容器,然后重新创建(保持使用 `volumes-from` 挂载的卷),以保证新启动的服务匹配 `docker-compose.yml` 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 `docker-compose up --no-recreate`。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 `docker-compose up --no-deps -d <SERVICE_NAME>` 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
244+
默认情况,如果服务容器已经存在,`docker compose up` 将会尝试停止容器,然后重新创建(保持使用 `volumes-from` 挂载的卷),以保证新启动的服务匹配 `docker-compose.yml` 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 `docker compose up --no-recreate`。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 `docker compose up --no-deps -d <SERVICE_NAME>` 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
265245

266246
选项:
267247

@@ -281,10 +261,10 @@ $ docker-compose scale web=3 db=2
281261

282262
### `version`
283263

284-
格式为 `docker-compose version`
264+
格式为 `docker compose version`
285265

286266
打印版本信息。
287267

288268
## 参考资料
289269

290-
* [官方文档](https://docs.docker.com/compose/reference/overview/)
270+
* [官方文档](https://docs.docker.com/compose/reference/)

compose/compose_file.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ tmpfs:
187187

188188
从文件中获取环境变量,可以为单独的文件路径或列表。
189189

190-
如果通过 `docker-compose -f FILE` 方式来指定 Compose 模板文件,则 `env_file` 中变量的路径会基于模板文件路径。
190+
如果通过 `docker compose -f FILE` 方式来指定 Compose 模板文件,则 `env_file` 中变量的路径会基于模板文件路径。
191191

192192
如果有变量名称与 `environment` 指令冲突,则按照惯例,以后者为准。
193193

@@ -560,9 +560,9 @@ db:
560560
image: "mongo:${MONGO_VERSION}"
561561
```
562562

563-
如果执行 `MONGO_VERSION=3.2 docker-compose up` 则会启动一个 `mongo:3.2` 镜像的容器;如果执行 `MONGO_VERSION=2.8 docker-compose up` 则会启动一个 `mongo:2.8` 镜像的容器。
563+
如果执行 `MONGO_VERSION=3.2 docker compose up` 则会启动一个 `mongo:3.2` 镜像的容器;如果执行 `MONGO_VERSION=2.8 docker compose up` 则会启动一个 `mongo:2.8` 镜像的容器。
564564

565-
若当前目录存在 `.env` 文件,执行 `docker-compose` 命令时将从该文件中读取变量。
565+
若当前目录存在 `.env` 文件,执行 `docker compose` 命令时将从该文件中读取变量。
566566

567567
在当前目录新建 `.env` 文件并写入以下内容。
568568

@@ -571,7 +571,7 @@ db:
571571
MONGO_VERSION=3.6
572572
```
573573

574-
执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器。
574+
执行 `docker compose up` 则会启动一个 `mongo:3.6` 镜像的容器。
575575

576576
## 参考资料
577577

compose/django.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ services:
4949
5050
查看 [`docker-compose.yml` 章节](compose_file.md) 了解更多详细的工作机制。
5151

52-
现在我们就可以使用 `docker-compose run` 命令启动一个 `Django` 应用了。
52+
现在我们就可以使用 `docker compose run` 命令启动一个 `Django` 应用了。
5353

5454
```bash
55-
$ docker-compose run web django-admin startproject django_example .
55+
$ docker compose run web django-admin startproject django_example .
5656
```
5757

5858
由于 web 服务所使用的镜像并不存在,所以 Compose 会首先使用 `Dockerfile` 为 web 服务构建一个镜像,接着使用这个镜像在容器里运行 `django-admin startproject django_example` 指令。
@@ -85,10 +85,10 @@ DATABASES = {
8585
}
8686
```
8787

88-
这些信息是在 [postgres](https://hub.docker.com/_/postgres/) 镜像固定设置好的。然后,运行 `docker-compose up` :
88+
这些信息是在 [postgres](https://hub.docker.com/_/postgres/) 镜像固定设置好的。然后,运行 `docker compose up` :
8989

9090
```bash
91-
$ docker-compose up
91+
$ docker compose up
9292
9393
django_db_1 is up-to-date
9494
Creating django_web_1 ...
@@ -113,8 +113,8 @@ web_1 | Quit the server with CONTROL-C.
113113

114114
这个 `Django` 应用已经开始在你的 Docker 守护进程里监听着 `8000` 端口了。打开 `127.0.0.1:8000` 即可看到 `Django` 欢迎页面。
115115

116-
你还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完 `docker-compose up` 后,在另外一个终端进入文件夹运行以下命令即可:
116+
你还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完 `docker compose up` 后,在另外一个终端进入文件夹运行以下命令即可:
117117

118118
```bash
119-
$ docker-compose run web python manage.py syncdb
119+
$ docker compose run web python manage.py syncdb
120120
```

0 commit comments

Comments
 (0)