1
- docker-compose 备忘清单
1
+ Docker Compose 备忘清单
2
2
===
3
- 这是 [ docker-compose] ( https://docs.docker.com/compose/ ) 的官方文档。 你可以在这里找到最常见的 docker-compose 使用方式。
4
3
5
- ---
4
+ 这是 [ docker-compose ] ( https://docs.docker.com/compose/ ) 的快速参考备忘单。你可以在这里找到最常见的 Docker Compose 使用方式。
6
5
7
6
入门
8
7
---
9
- <!-- rehype:body-class=cols-2-->
10
8
11
- #### 安装 docker-compose 需要安装(docker desktop)
9
+ ### Docker Compose 是什么?
12
10
13
- - windows 安装
11
+ - ` Docker-compsoe ` 是一个开源项目,用于定义和运行多容器 ` Docker ` 应用程序的工具。由 ` Docker ` 社区维护。
12
+ - 通过一个 ` YAML ` 文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。
13
+ - [ Docker Compose 开源地址] ( https://github.com/docker/compose )
14
+ - [ Docker Compose 发行地址] ( https://github.com/docker/compose/releases ) _ github.com_
14
15
15
- - 官网地址: [ https://docs.docker.com/desktop/install/windows-install/ ] ( https://docs.docker.com/desktop/install/windows-install/ )
16
+ ### 基本概念
16
17
17
- - linux 版本安装
18
+ - ** 服务 (services):** 一个服务指的是一个容器,即一个应用程序的一个实例。
19
+ - ** 容器 (container):** ` Docker ` 容器,其中运行着应用程序的一个实例。
20
+ - ** 镜像 (image):** ` Docker ` 镜像,用于创建容器的模板。
21
+ - ** Docker-Compose 文件:** 一个 ` YAML ` 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
18
22
19
- - 官网地址: [ https://docs.docker.com/desktop/install/linux-install/ ] ( https://docs.docker.com/desktop/install/linux-install/ )
23
+ ### Docker-Compose 文件结构
20
24
21
- - mac 版本安装
25
+ - ` version ` : _ Docker-Compose_ 文件的版本。
26
+ - ` services ` : 定义了各个服务,每个服务都有自己的配置项,如镜像、端口映射、依赖等。
27
+ - ` networks ` : 定义了应用程序使用的网络,可以自定义网络以控制服务之间的通信。
28
+ - ` volumes ` : 定义了应用程序使用的卷,用于持久化数据或与主机共享文件。
22
29
23
- - 官网地址:[ https://docs.docker.com/desktop/install/mac-install/ ] ( https://docs.docker.com/desktop/install/mac-install/ )
30
+ ### 安装
31
+ <!-- rehype:wrap-class=row-span-2-->
24
32
25
- - 可以通过 releases 下载安装 releases 地址: [ https://github.com/docker/compose/releases ] ( https://github.com/docker/compose/releases )
33
+ 对于 Ubuntu 和 Debian,运行:
26
34
27
- - 安装成功
28
-
29
- ``` sh
30
- docker compose version
31
- Docker Compose version v2.17.3
35
+ ``` bash
36
+ sudo apt-get update
37
+ sudo apt-get install docker-compose-plugin
38
+ ```
32
39
33
- docker --version
34
- Docker version 23.0.5, build bc4487a
40
+ 对于基于 RPM 的发行版,运行:
35
41
36
- docker version
37
- Client: Docker Engine - Community
38
- Cloud integration: v1.0.31
39
- Version: 23.0.5
40
- API version: 1.42
41
- < ...>
42
- ```
42
+ ``` bash
43
+ sudo yum update
44
+ sudo yum install docker-compose-plugin
45
+ ```
43
46
44
- 介绍
45
- ---
47
+ 通过检查版本来验证 Docker Compose 是否正确安装
46
48
47
- ** Docker-Compose 是什么?**
48
-
49
- - ` Docker-compsoe ` 是一个开源项目,用于定义和运行多容器 ` Docker ` 应用程序的工具。由 ` Docker ` 社区维护。
50
-
51
- - 通过一个 ` YAML ` 文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。
52
-
53
- - 开源地址:[ https://github.com/docker/compose ] ( https://github.com/docker/compose )
54
-
55
- - releases 地址:[ https://github.com/docker/compose/releases ] ( https://github.com/docker/compose/releases )
56
-
57
- ** 基本概念:**
58
-
59
- - ** 服务 (services):** 一个服务指的是一个容器,即一个应用程序的一个实例。
60
-
61
- - ** 容器 (container):** ` Docker ` 容器,其中运行着应用程序的一个实例。
62
-
63
- - ** 镜像 (image):** ` Docker ` 镜像,用于创建容器的模板。
64
-
65
- - ** Docker-Compose 文件:** 一个 ` YAML ` 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
66
-
67
- ** Docker-Compose 文件结构:**
68
-
69
- - ` version ` : ` Docker-Compose ` 文件的版本。
70
-
71
- - ` services ` : 定义了各个服务,每个服务都有自己的配置项,如镜像、端口映射、依赖等。
72
-
73
- - ` networks ` : 定义了应用程序使用的网络,可以自定义网络以控制服务之间的通信。
74
-
75
- - ` volumes ` : 定义了应用程序使用的卷,用于持久化数据或与主机共享文件。
76
-
77
- 命令
78
- ---
79
- ** 常用命令:**
49
+ ``` sh
50
+ docker compose version
51
+ # Docker Compose version v2.17.3
52
+
53
+ docker --version
54
+ # Docker version 23.0.5, build bc4487a
55
+
56
+ docker version
57
+ # Client: Docker Engine - Community
58
+ # Cloud integration: v1.0.31
59
+ # Version: 23.0.5
60
+ # API version: 1.42
61
+ # <...>
62
+ ```
63
+
64
+ ### 独立安装 Compose
65
+
66
+ ``` sh
67
+ curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
68
+ ```
69
+ <!-- rehype:className=wrap-text-->
70
+
71
+ 如果命令 ` docker-compose ` 安装失败,请检查你的路径。你也可以创建一个符号链接,指向 ` /usr/bin ` 或路径中的任何其他目录。例如
72
+
73
+ ``` sh
74
+ $ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
75
+ ```
76
+ <!-- rehype:className=wrap-text-->
77
+
78
+ ### 更新 Compose
79
+
80
+ 对于 Ubuntu 和 Debian,运行:
81
+
82
+ ``` sh
83
+ sudo apt-get update
84
+ sudo apt-get install docker-compose-plugin
85
+ ```
86
+
87
+ 对于基于 RPM 的发行版,运行:
88
+
89
+ ``` sh
90
+ sudo yum update
91
+ sudo yum install docker-compose-plugin
92
+ ```
93
+
94
+ ### 卸载 Docker Compose
95
+ <!-- rehype:wrap-class=col-span-2-->
96
+
97
+ Ubuntu, Debian:
98
+
99
+ ``` sh
100
+ sudo apt-get remove docker-compose-plugin
101
+ ```
102
+
103
+ 基于 RPM 的发行版
104
+
105
+ ``` sh
106
+ sudo yum remove docker-compose-plugin
107
+ ```
108
+
109
+ 如果您使用curl安装Compose CLI插件,要卸载它,请运行:
110
+
111
+ ``` sh
112
+ rm $DOCKER_CONFIG /cli-plugins/docker-compose
113
+ ```
114
+
115
+ 为所有用户删除,或者,如果您已为所有用户安装 Compose,请运行:
116
+
117
+ ``` sh
118
+ rm /usr/local/lib/docker/cli-plugins/docker-compose
119
+ ```
120
+
121
+ ### 检查 Compose 的安装位置
122
+ <!-- rehype:wrap-class=col-span-3-->
123
+
124
+ ``` sh
125
+ docker info --format ' {{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}'
126
+ ```
127
+
128
+ ### 常用命令
129
+ <!-- rehype:wrap-class=col-span-2-->
80
130
81
131
| docker compose命令 | 说明 | 常见参数说明 |
82
132
| ------------------------ | ---------------- | -------------------- |
@@ -96,65 +146,117 @@ docker-compose 备忘清单
96
146
| ` docker compose images ` | 列出镜像 | |
97
147
| ` docker compose push ` | 推送镜像 | |
98
148
| ` docker compose version ` | 查看版本信息 | |
149
+ <!-- rehype:className=left-align-->
99
150
100
- 配置模板
151
+ Docker Compose 配置
101
152
---
102
153
103
- ** 示例 Docker-Compose 文件:**
104
-
105
- ` docker-compsoe ` 的配置文件是一个 ` YAML ` 文件,用于定义和运行多容器 Docker 应用程序。它使用 一个单一的 YAML 文件(通常命名为 ` docker-compose.yml ` )来定义多个容器的集合,以及它们之间的依赖关系和服务。
154
+ ### 示例配置文件
155
+ <!-- rehype:wrap-class=col-span-2-->
106
156
107
- 以下是一份 ` docker-compose.yml ` 文件的配置模板,包含了常用配置项和解释:
157
+ ` docker-compose ` 的配置文件是一个 ` YAML ` 文件,用于定义和运行多容器 Docker 应用程序。通常命名为 ` docker-compose.yml ` ,它使用单一的 YAML 文件来定义多个容器的集合,以及它们之间的依赖关系和服务。 以下是一份 ` docker-compose.yml ` 文件的配置模板,包含了常用配置项和解释:
108
158
109
- ``` yaml
110
- version : ' 3' # 指定使用的Docker Compose文件格式版本,目前推荐使用3.x或更高
159
+ ``` yml
160
+ version : ' 3' # 指定使用的 Docker Compose 文件格式版本,目前推荐使用 3.x 或更高
111
161
112
162
services : # 定义一个或多个服务
113
163
service1 : # 服务名称
114
- image : nginx:latest # 使用的Docker镜像,这里是Nginx的最新版本
115
- # 或者使用构建指令来从Dockerfile构建镜像
164
+ image : nginx:latest # 使用的 Docker 镜像,这里是 Nginx 的最新版本
165
+
166
+ # 或者使用构建指令来从 Dockerfile 构建镜像
116
167
build :
117
- context : ./path/to/Dockerfile # Dockerfile所在的目录
118
- dockerfile : Dockerfile-alternative # 可选的Dockerfile名称,默认是Dockerfile
168
+ context : ./path/to/Dockerfile # Dockerfile 所在的目录
169
+ dockerfile : Dockerfile-alternative # 可选的 Dockerfile 名称,默认是 Dockerfile
119
170
120
171
# 容器启动时执行的命令,覆盖默认的命令
121
- command : ["nginx", "-g", "daemon off;"] # 以数组形式指定,防止shell解析
172
+ command :
173
+ - " nginx"
174
+ - " -g"
175
+ - " daemon off;" # 以数组形式指定,防止 shell 解析
122
176
123
177
ports : # 容器端口与主机端口映射
124
- - " 80:80" # 主机80端口映射到容器的80端口
178
+ - " 80:80" # 主机 80 端口映射到容器的 80 端口
125
179
126
180
volumes : # 数据卷挂载
127
- - ./nginx.conf:/etc/nginx/nginx.conf:ro # 将主机上的nginx.conf挂载到容器的 /etc/nginx/nginx.conf,只读
128
- - ./logs:/var/log/nginx # 将logs目录挂载到容器的 /var/log/nginx
181
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro # 将主机上的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf,只读
182
+ - ./logs:/var/log/nginx # 将 logs 目录挂载到容器的 /var/log/nginx
129
183
130
184
environment : # 设置环境变量
131
- - MYSQL_HOST=database # 可以引用其他服务,这里假设有一个名为database的服务
185
+ - MYSQL_HOST=database # 可以引用其他服务,这里假设有一个名为 database 的服务
132
186
- MYSQL_PORT=3306
133
187
134
- depends_on : # 服务启动顺序,这里表明service1依赖于database服务
188
+ depends_on : # 服务启动顺序,这里表明 service1 依赖于 database 服务
135
189
- database
136
190
137
191
networks : # 定义网络
138
- - my_network # 参与名为my_network的网络
192
+ - my_network # 参与名为 my_network 的网络
139
193
140
194
service2 : # 另一个服务示例
141
195
# ... 类似地定义其他服务
142
196
143
- networks : # 定义网络
197
+ networks : # 定义网络
144
198
my_network : # 网络名称
145
- driver : bridge # 网络驱动,通常是bridge模式
199
+ driver : bridge # 网络驱动,通常是 bridge 模式
146
200
147
201
volumes : # 定义数据卷
148
202
nginx_logs : # 卷名称
203
+
149
204
```
150
205
151
-
152
- **备忘录事项**
206
+ 备忘录事项
207
+
208
+ - 使用 Docker-Compose 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信。
209
+ - 配置文件中的缩进必须使用空格,不能使用制表符。
210
+ - 可以使用环境变量来动态设置配置项,如数据库密码。
211
+ - 当你修改了 ` docker-compose.yml ` 文件后,需要重新运行 ` docker-compose up ` 来使改动生效。
212
+ - 使用 ` docker-compose build ` 仅重建镜像,而不启动容器。
213
+ - 使用 ` docker-compose restart ` 重启容器。
214
+ - 记得清理不再需要的容器和镜像,以避免磁盘空间不足。
215
+
216
+ ### 使用环境变量
217
+
218
+ 与 ` docker run -e VARIABLE=VALUE ... ` 相同
219
+
220
+ ``` yml
221
+ web :
222
+ environment :
223
+ - DEBUG=1
224
+ ` ` `
225
+
226
+ 您可以选择不设置值并将环境变量从 shell 直接传递到容器。它的工作方式与 ` docker run -e VARIABLE ...` 相同:
227
+
228
+ ` ` ` yml
229
+ web:
230
+ environment:
231
+ - DEBUG
232
+ web:
233
+ environment:
234
+ - DEBUG=${DEBUG}
235
+ ` ` `
236
+
237
+ ` env_file` 属性允许您在 Compose 应用程序中使用多个 `.env` 文件。
238
+ 它的工作方式与 `docker run --env-file=FILE ...` 相同。
239
+
240
+ ` ` ` yml
241
+ web:
242
+ env_file:
243
+ - web-variables.env
244
+ ` ` `
245
+
246
+ # ### 额外的信息
247
+
248
+ ` ` ` yml
249
+ env_file:
250
+ - path: ./default.env
251
+ required: true # default
252
+ - path: ./override.env
253
+ required: false
254
+ ` ` `
153
255
154
- - 配置文件中的缩进必须使用空格,不能使用制表符 。
155
- - 可以使用环境变量来动态设置配置项,如数据库密码 。
156
- - 使用 ` Docker-Compose` 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信 。
157
- - 当你修改了 `docker-compose.yml` 文件后,需要重新运行 `docker- compose up` 来使改动生效 。
158
- - 使用 `docker- compose build` 仅重建镜像,而不启动容器 。
159
- - 使用 `docker-compose restart` 重启容器 。
160
- - 记得清理不再需要的容器和镜像,以避免磁盘空间不足。
256
+ - 如果指定了多个文件,则它们将按顺序进行评估,可以覆盖先前文件中设置的值 。
257
+ - 在 `.env` 文件中声明的环境变量不能在 Compose 文件中单独再次引用 。
258
+ - 如果同时使用 `env_file` 和 `environment` 属性,则由 `environment` 设置的环境变量优先级更高 。
259
+ - 在 `env_file` 属性中指定的 `.env` 文件的路径是相对于 compose.yml 文件的位置的 。
260
+ - ` .env ` 文件中的值可以通过使用 `docker compose run -e` 命令行来从命令行覆盖 。
261
+ - 如果使用 `--env-file` 替换了另一个 `.env`,则您的 `.env` 文件可以被另一个 `.env` 文件覆盖 。
262
+ - 从 Docker Compose 版本 2.24.0 开始,您可以通过使用 `required` 字段将 `.env` 文件设置为可选项。当 `required` 设置为 `false` 且 `.env` 文件丢失时,Compose 将静默忽略该条目
0 commit comments