Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: yeasy/docker_practice
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: docker-practice/docker_practice
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Can’t automatically merge. Don’t worry, you can still create the pull request.
  • 1 commit
  • 19 files changed
  • 1 contributor

Commits on Jun 25, 2022

  1. compose v2

    Signed-off-by: Kang Huaishuai <[email protected]>
    khs1994 committed Jun 25, 2022

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    6cd1cad View commit details
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# 修订记录

* 1.3.0 2021-YY-DD
* 1.4.0 2022-MM-DD
* Docker Compose v2 为例介绍 compose

* 1.3.0 2021-12-02
* 全面支持 Docker v20.10 新版本
* 新增 Docker Compose v2
* Docker Hub 自动构建转为付费功能
5 changes: 2 additions & 3 deletions SUMMARY.md
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
* [Raspberry Pi](install/raspberry-pi.md)
* [Linux 离线安装](install/offline.md)
* [macOS](install/mac.md)
* [Windows 10](install/windows.md)
* [Windows 10/11](install/windows.md)
* [镜像加速器](install/mirror.md)
* [开启实验特性](install/experimental.md)
* [使用镜像](image/README.md)
@@ -82,7 +82,6 @@
* [使用 buildx 构建多种系统架构支持的 Docker 镜像](buildx/multi-arch-images.md)
* [Docker Compose](compose/README.md)
* [简介](compose/introduction.md)
* [Compose v2](compose/v2.md)
* [安装与卸载](compose/install.md)
* [使用](compose/usage.md)
* [命令说明](compose/commands.md)
@@ -143,7 +142,7 @@
* [Debian Ubuntu](cases/os/debian.md)
* [CentOS Fedora](cases/os/centos.md)
* [本章小结](cases/os/summary.md)
* [实战案例 - CI/CD](cases/ci/README.md)
* [CI/CD](cases/ci/README.md)
* [GitHub Actions](cases/ci/actions/README.md)
* [Drone](cases/ci/drone/README.md)
* [部署 Drone](cases/ci/drone/install.md)
4 changes: 0 additions & 4 deletions buildx/buildkit.md
Original file line number Diff line number Diff line change
@@ -145,10 +145,6 @@ $ ssh-add ~/.ssh/id_rsa
$ docker build -t test --ssh default=$SSH_AUTH_SOCK .
```

## docker-compose build 使用 Buildkit

设置 `COMPOSE_DOCKER_CLI_BUILD=1` 环境变量即可使用

## 官方文档

* https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md
2 changes: 1 addition & 1 deletion cases/ci/drone/install.md
Original file line number Diff line number Diff line change
@@ -82,5 +82,5 @@ DRONE_GITHUB_CLIENT_SECRET=
### 启动 Drone
```bash
$ docker-compose up -d
$ docker compose up -d
```
78 changes: 29 additions & 49 deletions compose/commands.md
Original file line number Diff line number Diff line change
@@ -4,12 +4,12 @@

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

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

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

```bash
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
docker compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
```
## 命令选项
@@ -26,13 +26,13 @@ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
### `build`
格式为 `docker-compose build [options] [SERVICE...]`。
格式为 `docker compose build [options] [SERVICE...]`。
构建(重新构建)项目中的服务容器。
服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。
可以随时在项目目录下运行 `docker-compose build` 来重新构建服务。
可以随时在项目目录下运行 `docker compose build` 来重新构建服务。
选项包括:
@@ -64,33 +64,33 @@ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
### `kill`
格式为 `docker-compose kill [options] [SERVICE...]`。
格式为 `docker compose kill [options] [SERVICE...]`。
通过发送 `SIGKILL` 信号来强制停止服务容器。
支持通过 `-s` 参数来指定发送的信号,例如通过如下指令发送 `SIGINT` 信号。
```bash
$ docker-compose kill -s SIGINT
$ docker compose kill -s SIGINT
```
### `logs`
格式为 `docker-compose logs [options] [SERVICE...]`。
格式为 `docker compose logs [options] [SERVICE...]`。
查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。
查看服务容器的输出。默认情况下,docker compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。
该命令在调试问题的时候十分有用。
### `pause`
格式为 `docker-compose pause [SERVICE...]`。
格式为 `docker compose pause [SERVICE...]`。
暂停一个服务容器。
### `port`
格式为 `docker-compose port [options] SERVICE PRIVATE_PORT`。
格式为 `docker compose port [options] SERVICE PRIVATE_PORT`。
打印某个容器端口所映射的公共端口。
@@ -102,7 +102,7 @@ $ docker-compose kill -s SIGINT
### `ps`
格式为 `docker-compose ps [options] [SERVICE...]`。
格式为 `docker compose ps [options] [SERVICE...]`。
列出项目中目前的所有容器。
@@ -112,7 +112,7 @@ $ docker-compose kill -s SIGINT
### `pull`
格式为 `docker-compose pull [options] [SERVICE...]`。
格式为 `docker compose pull [options] [SERVICE...]`。
拉取服务依赖的镜像。
@@ -126,7 +126,7 @@ $ docker-compose kill -s SIGINT
### `restart`
格式为 `docker-compose restart [options] [SERVICE...]`。
格式为 `docker compose restart [options] [SERVICE...]`。
重启项目中的服务。
@@ -136,9 +136,9 @@ $ docker-compose kill -s SIGINT
### `rm`
格式为 `docker-compose rm [options] [SERVICE...]`。
格式为 `docker compose rm [options] [SERVICE...]`。
删除所有(停止状态的)服务容器。推荐先执行 `docker-compose stop` 命令来停止容器。
删除所有(停止状态的)服务容器。推荐先执行 `docker compose stop` 命令来停止容器。
选项:
@@ -147,14 +147,14 @@ $ docker-compose kill -s SIGINT
* `-v` 删除容器所挂载的数据卷。
### `run`
格式为 `docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`。
格式为 `docker compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`。
在指定服务上执行一个命令。
例如:
```bash
$ docker-compose run ubuntu ping docker.com
$ docker compose run ubuntu ping docker.com
```
将会启动一个 ubuntu 服务容器,并执行 `ping docker.com` 命令。
@@ -172,7 +172,7 @@ $ docker-compose run ubuntu ping docker.com
如果不希望自动启动关联的容器,可以使用 `--no-deps` 选项,例如
```bash
$ docker-compose run --no-deps web python manage.py shell
$ docker compose run --no-deps web python manage.py shell
```
将不会启动 web 容器所关联的其它容器。
@@ -199,37 +199,17 @@ $ docker-compose run --no-deps web python manage.py shell
* `-T` 不分配伪 tty,意味着依赖 tty 的指令将无法运行。
### `scale`
格式为 `docker-compose scale [options] [SERVICE=NUM...]`。
设置指定服务运行的容器个数。
通过 `service=num` 的参数来设置数量。例如:
```bash
$ docker-compose scale web=3 db=2
```
将启动 3 个容器运行 web 服务,2 个容器运行 db 服务。
一般的,当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。
选项:
* `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。
### `start`
格式为 `docker-compose start [SERVICE...]`。
格式为 `docker compose start [SERVICE...]`。
启动已经存在的服务容器。
### `stop`
格式为 `docker-compose stop [options] [SERVICE...]`。
格式为 `docker compose stop [options] [SERVICE...]`。
停止已经处于运行状态的容器,但不删除它。通过 `docker-compose start` 可以再次启动这些容器。
停止已经处于运行状态的容器,但不删除它。通过 `docker compose start` 可以再次启动这些容器。
选项:
@@ -241,27 +221,27 @@ $ docker-compose scale web=3 db=2
### `unpause`
格式为 `docker-compose unpause [SERVICE...]`。
格式为 `docker compose unpause [SERVICE...]`。
恢复处于暂停状态中的服务。
### `up`
格式为 `docker-compose up [options] [SERVICE...]`。
格式为 `docker compose up [options] [SERVICE...]`。
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
链接的服务都将会被自动启动,除非已经处于运行状态。
可以说,大部分时候都可以直接通过该命令来启动一个项目。
默认情况,`docker-compose up` 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
默认情况,`docker compose up` 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
当通过 `Ctrl-C` 停止命令时,所有容器将会停止。
如果使用 `docker-compose up -d`,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
如果使用 `docker compose up -d`,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
默认情况,如果服务容器已经存在,`docker-compose up` 将会尝试停止容器,然后重新创建(保持使用 `volumes-from` 挂载的卷),以保证新启动的服务匹配 `docker-compose.yml` 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 `docker-compose up --no-recreate`。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 `docker-compose up --no-deps -d <SERVICE_NAME>` 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
默认情况,如果服务容器已经存在,`docker compose up` 将会尝试停止容器,然后重新创建(保持使用 `volumes-from` 挂载的卷),以保证新启动的服务匹配 `docker-compose.yml` 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 `docker compose up --no-recreate`。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 `docker compose up --no-deps -d <SERVICE_NAME>` 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
选项:
@@ -281,10 +261,10 @@ $ docker-compose scale web=3 db=2
### `version`
格式为 `docker-compose version`。
格式为 `docker compose version`。

打印版本信息。

## 参考资料

* [官方文档](https://docs.docker.com/compose/reference/overview/)
* [官方文档](https://docs.docker.com/compose/reference/)
8 changes: 4 additions & 4 deletions compose/compose_file.md
Original file line number Diff line number Diff line change
@@ -187,7 +187,7 @@ tmpfs:
从文件中获取环境变量,可以为单独的文件路径或列表。
如果通过 `docker-compose -f FILE` 方式来指定 Compose 模板文件,则 `env_file` 中变量的路径会基于模板文件路径。
如果通过 `docker compose -f FILE` 方式来指定 Compose 模板文件,则 `env_file` 中变量的路径会基于模板文件路径。
如果有变量名称与 `environment` 指令冲突,则按照惯例,以后者为准。
@@ -560,9 +560,9 @@ db:
image: "mongo:${MONGO_VERSION}"
```
如果执行 `MONGO_VERSION=3.2 docker-compose up` 则会启动一个 `mongo:3.2` 镜像的容器如果执行 `MONGO_VERSION=2.8 docker-compose up` 则会启动一个 `mongo:2.8` 镜像的容器
如果执行 `MONGO_VERSION=3.2 docker compose up` 则会启动一个 `mongo:3.2` 镜像的容器;如果执行 `MONGO_VERSION=2.8 docker compose up` 则会启动一个 `mongo:2.8` 镜像的容器。
若当前目录存在 `.env` 文件执行 `docker-compose` 命令时将从该文件中读取变量
若当前目录存在 `.env` 文件,执行 `docker compose` 命令时将从该文件中读取变量。
在当前目录新建 `.env` 文件并写入以下内容。
@@ -571,7 +571,7 @@ db:
MONGO_VERSION=3.6
```
执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器
执行 `docker compose up` 则会启动一个 `mongo:3.6` 镜像的容器。

## 参考资料

12 changes: 6 additions & 6 deletions compose/django.md
Original file line number Diff line number Diff line change
@@ -49,10 +49,10 @@ services:

查看 [`docker-compose.yml` 章节](compose_file.md) 了解更多详细的工作机制

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

```bash
$ docker-compose run web django-admin startproject django_example .
$ docker compose run web django-admin startproject django_example .
```

由于 web 服务所使用的镜像并不存在所以 Compose 会首先使用 `Dockerfile` web 服务构建一个镜像接着使用这个镜像在容器里运行 `django-admin startproject django_example` 指令
@@ -85,10 +85,10 @@ DATABASES = {
}
```
这些信息是在 [postgres](https://hub.docker.com/_/postgres/) 镜像固定设置好的。然后,运行 `docker-compose up` :
这些信息是在 [postgres](https://hub.docker.com/_/postgres/) 镜像固定设置好的。然后,运行 `docker compose up` :
```bash
$ docker-compose up
$ docker compose up
django_db_1 is up-to-date
Creating django_web_1 ...
@@ -113,8 +113,8 @@ web_1 | Quit the server with CONTROL-C.

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

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

```bash
$ docker-compose run web python manage.py syncdb
$ docker compose run web python manage.py syncdb
```
Loading