feat: add docs/docker-compose.md (#645)
* feat: add docker-compose reference * fix: alter note
This commit is contained in:
parent
c808475d59
commit
19ed3fa3b2
@ -51,6 +51,7 @@ Quick Reference
|
||||
[C++](./docs/cpp.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->
|
||||
[Dart](./docs/dart.md)<!--rehype:style=background: rgb(64 196 255);-->
|
||||
[Docker](./docs/docker.md)<!--rehype:style=background: rgb(72 143 223);-->
|
||||
[Docker-Compose](./docs/docker-compose.md)<!--rehype:style=background: rgb(72 143 223);&class=tag&data-lang=Docker-->
|
||||
[Dockerfile](./docs/dockerfile.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Docker-->
|
||||
[Django](./docs/django.md)<!--rehype:style=background: rgb(12 75 51);&class=contributing tag&data-lang=Python-->
|
||||
[Elixir](./docs/elixir.md)<!--rehype:style=background: rgb(124 26 156);&class=contributing tag&data-lang=Elixir-->
|
||||
|
3
assets/docker-compose.svg
Normal file
3
assets/docker-compose.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 640 512" height="1em" width="1em">
|
||||
<path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 713 B |
160
docs/docker-compose.md
Normal file
160
docs/docker-compose.md
Normal file
@ -0,0 +1,160 @@
|
||||
docker-compose 备忘清单
|
||||
===
|
||||
这是 [docker-compose](https://docs.docker.com/compose/) 的官方文档。 你可以在这里找到最常见的 docker-compose 使用方式。
|
||||
|
||||
---
|
||||
|
||||
入门
|
||||
---
|
||||
<!--rehype:body-class=cols-2-->
|
||||
|
||||
#### 安装 docker-compose 需要安装(docker desktop)
|
||||
|
||||
- windows 安装
|
||||
|
||||
- 官网地址:[https://docs.docker.com/desktop/install/windows-install/](https://docs.docker.com/desktop/install/windows-install/)
|
||||
|
||||
- linux 版本安装
|
||||
|
||||
- 官网地址:[https://docs.docker.com/desktop/install/linux-install/](https://docs.docker.com/desktop/install/linux-install/)
|
||||
|
||||
- mac 版本安装
|
||||
|
||||
- 官网地址:[https://docs.docker.com/desktop/install/mac-install/](https://docs.docker.com/desktop/install/mac-install/)
|
||||
|
||||
- 可以通过 releases 下载安装 releases 地址:[https://github.com/docker/compose/releases](https://github.com/docker/compose/releases)
|
||||
|
||||
- 安装成功
|
||||
|
||||
```sh
|
||||
docker compose version
|
||||
Docker Compose version v2.17.3
|
||||
|
||||
docker --version
|
||||
Docker version 23.0.5, build bc4487a
|
||||
|
||||
docker version
|
||||
Client: Docker Engine - Community
|
||||
Cloud integration: v1.0.31
|
||||
Version: 23.0.5
|
||||
API version: 1.42
|
||||
<...>
|
||||
```
|
||||
|
||||
介绍
|
||||
---
|
||||
|
||||
**Docker-Compose 是什么?**
|
||||
|
||||
- `Docker-compsoe` 是一个开源项目,用于定义和运行多容器 `Docker` 应用程序的工具。由 `Docker` 社区维护。
|
||||
|
||||
- 通过一个 `YAML` 文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。
|
||||
|
||||
- 开源地址:[https://github.com/docker/compose](https://github.com/docker/compose)
|
||||
|
||||
- releases 地址:[https://github.com/docker/compose/releases](https://github.com/docker/compose/releases)
|
||||
|
||||
**基本概念:**
|
||||
|
||||
- **服务 (services):** 一个服务指的是一个容器,即一个应用程序的一个实例。
|
||||
|
||||
- **容器 (container):** `Docker` 容器,其中运行着应用程序的一个实例。
|
||||
|
||||
- **镜像 (image):** `Docker` 镜像,用于创建容器的模板。
|
||||
|
||||
- **Docker-Compose 文件:** 一个 `YAML` 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
|
||||
|
||||
**Docker-Compose 文件结构:**
|
||||
|
||||
- `version`: `Docker-Compose` 文件的版本。
|
||||
|
||||
- `services`: 定义了各个服务,每个服务都有自己的配置项,如镜像、端口映射、依赖等。
|
||||
|
||||
- `networks`: 定义了应用程序使用的网络,可以自定义网络以控制服务之间的通信。
|
||||
|
||||
- `volumes`: 定义了应用程序使用的卷,用于持久化数据或与主机共享文件。
|
||||
|
||||
命令
|
||||
---
|
||||
**常用命令:**
|
||||
|
||||
| docker compose命令 | 说明 | 常见参数说明 |
|
||||
| ------------------------ | ---------------- | -------------------- |
|
||||
| `docker compose up` | 启动容器 | `-d` 后台运行容器 |
|
||||
| `docker compose down` | 停止容器 | `-v` 删除容器和卷 |
|
||||
| `docker compose ps` | 查看容器状态 | |
|
||||
| `docker compose logs` | 查看容器日志 | `-f` 跟随日志输出 |
|
||||
| `docker compose exec` | 进入容器 | `-it` 启动交互式终端 |
|
||||
| `docker compose build` | 构建镜像 | |
|
||||
| `docker compose rm` | 删除容器 | |
|
||||
| `docker compose stop` | 停止容器 | |
|
||||
| `docker compose start` | 启动容器 | |
|
||||
| `docker compose restart` | 重启容器 | |
|
||||
| `docker compose pull` | 拉取镜像 | |
|
||||
| `docker compose run` | 运行一个临时容器 | |
|
||||
| `docker compose config` | 显示配置信息 | |
|
||||
| `docker compose images` | 列出镜像 | |
|
||||
| `docker compose push` | 推送镜像 | |
|
||||
| `docker compose version` | 查看版本信息 | |
|
||||
|
||||
配置模板
|
||||
---
|
||||
|
||||
**示例 Docker-Compose 文件:**
|
||||
|
||||
`docker-compsoe` 的配置文件是一个 `YAML` 文件,用于定义和运行多容器 Docker 应用程序。它使用 一个单一的 YAML 文件(通常命名为 `docker-compose.yml`)来定义多个容器的集合,以及它们之间的依赖关系和服务。
|
||||
|
||||
以下是一份 `docker-compose.yml` 文件的配置模板,包含了常用配置项和解释:
|
||||
|
||||
```yaml
|
||||
version: '3' # 指定使用的Docker Compose文件格式版本,目前推荐使用3.x或更高
|
||||
|
||||
services: # 定义一个或多个服务
|
||||
service1: # 服务名称
|
||||
image: nginx:latest # 使用的Docker镜像,这里是Nginx的最新版本
|
||||
# 或者使用构建指令来从Dockerfile构建镜像
|
||||
build:
|
||||
context: ./path/to/Dockerfile # Dockerfile所在的目录
|
||||
dockerfile: Dockerfile-alternative # 可选的Dockerfile名称,默认是Dockerfile
|
||||
|
||||
# 容器启动时执行的命令,覆盖默认的命令
|
||||
command: ["nginx", "-g", "daemon off;"] # 以数组形式指定,防止shell解析
|
||||
|
||||
ports: # 容器端口与主机端口映射
|
||||
- "80:80" # 主机80端口映射到容器的80端口
|
||||
|
||||
volumes: # 数据卷挂载
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro # 将主机上的nginx.conf挂载到容器的/etc/nginx/nginx.conf,只读
|
||||
- ./logs:/var/log/nginx # 将logs目录挂载到容器的/var/log/nginx
|
||||
|
||||
environment: # 设置环境变量
|
||||
- MYSQL_HOST=database # 可以引用其他服务,这里假设有一个名为database的服务
|
||||
- MYSQL_PORT=3306
|
||||
|
||||
depends_on: # 服务启动顺序,这里表明service1依赖于database服务
|
||||
- database
|
||||
|
||||
networks: # 定义网络
|
||||
- my_network # 参与名为my_network的网络
|
||||
|
||||
service2: # 另一个服务示例
|
||||
# ... 类似地定义其他服务
|
||||
|
||||
networks: # 定义网络
|
||||
my_network: # 网络名称
|
||||
driver: bridge # 网络驱动,通常是bridge模式
|
||||
|
||||
volumes: # 定义数据卷
|
||||
nginx_logs: # 卷名称
|
||||
```
|
||||
|
||||
|
||||
**备忘录事项**
|
||||
|
||||
- 配置文件中的缩进必须使用空格,不能使用制表符。
|
||||
- 可以使用环境变量来动态设置配置项,如数据库密码。
|
||||
- 使用 `Docker-Compose` 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信。
|
||||
- 当你修改了 `docker-compose.yml` 文件后,需要重新运行 `docker-compose up` 来使改动生效。
|
||||
- 使用 `docker-compose build` 仅重建镜像,而不启动容器。
|
||||
- 使用 `docker-compose restart` 重启容器。
|
||||
- 记得清理不再需要的容器和镜像,以避免磁盘空间不足。
|
Loading…
x
Reference in New Issue
Block a user