From 7ec38273bbfd513aa3d86e00fa1091dff99ca7d6 Mon Sep 17 00:00:00 2001 From: khs1994 Date: Sun, 1 Sep 2019 14:46:33 +0800 Subject: [PATCH] [Compose] Update to v1.24.1 Signed-off-by: khs1994 --- .github/ISSUE_TEMPLATE/Bug_report.md | 8 ++-- .github/ISSUE_TEMPLATE/Custom.md | 8 ++-- compose/commands.md | 19 ++++++++ compose/compose_file.md | 23 ++++++++- compose/install.md | 70 +++------------------------- install/mac.md | 6 +-- manifest | 7 +++ 7 files changed, 64 insertions(+), 77 deletions(-) create mode 100644 manifest diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index f3fc585..8528cd1 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -21,11 +21,11 @@ about: Create a report to help us improve * [x] Others (Pls describe below) ### Docker Version - - + + -* [x] Edge (v18.09) -* [x] Stable (v18.09) +* [x] Edge (v19.03) +* [x] Stable (v19.03) * [x] 1.13.0 or Before ### Problem Description diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index ebf5e0c..650a860 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -21,11 +21,11 @@ about: Create a issue about Docker * [x] Others (Pls describe below) ### Docker Version - - + + -* [x] Edge (v18.09) -* [x] Stable (v18.09) +* [x] Edge (v19.03) +* [x] Stable (v19.03) * [x] 1.13.0 or Before ### Problem Description diff --git a/compose/commands.md b/compose/commands.md index c444c22..23d9c81 100644 --- a/compose/commands.md +++ b/compose/commands.md @@ -1,6 +1,7 @@ ## Compose 命令说明 ### 命令对象与格式 + 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。 执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。 @@ -66,6 +67,7 @@ docker-compose [-f=...] [options] [COMMAND] [ARGS...] 列出 Compose 文件中包含的镜像。 #### `kill` + 格式为 `docker-compose kill [options] [SERVICE...]`。 通过发送 `SIGKILL` 信号来强制停止服务容器。 @@ -77,6 +79,7 @@ $ docker-compose kill -s SIGINT ``` #### `logs` + 格式为 `docker-compose logs [options] [SERVICE...]`。 查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。 @@ -84,11 +87,13 @@ $ docker-compose kill -s SIGINT 该命令在调试问题的时候十分有用。 #### `pause` + 格式为 `docker-compose pause [SERVICE...]`。 暂停一个服务容器。 #### `port` + 格式为 `docker-compose port [options] SERVICE PRIVATE_PORT`。 打印某个容器端口所映射的公共端口。 @@ -100,6 +105,7 @@ $ docker-compose kill -s SIGINT * `--index=index` 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。 #### `ps` + 格式为 `docker-compose ps [options] [SERVICE...]`。 列出项目中目前的所有容器。 @@ -109,6 +115,7 @@ $ docker-compose kill -s SIGINT * `-q` 只打印容器的 ID 信息。 #### `pull` + 格式为 `docker-compose pull [options] [SERVICE...]`。 拉取服务依赖的镜像。 @@ -122,6 +129,7 @@ $ docker-compose kill -s SIGINT 推送服务依赖的镜像到 Docker 镜像仓库。 #### `restart` + 格式为 `docker-compose restart [options] [SERVICE...]`。 重启项目中的服务。 @@ -131,6 +139,7 @@ $ docker-compose kill -s SIGINT * `-t, --timeout TIMEOUT` 指定重启前停止容器的超时(默认为 10 秒)。 #### `rm` + 格式为 `docker-compose rm [options] [SERVICE...]`。 删除所有(停止状态的)服务容器。推荐先执行 `docker-compose stop` 命令来停止容器。 @@ -195,6 +204,7 @@ $ docker-compose run --no-deps web python manage.py shell * `-T` 不分配伪 tty,意味着依赖 tty 的指令将无法运行。 #### `scale` + 格式为 `docker-compose scale [options] [SERVICE=NUM...]`。 设置指定服务运行的容器个数。 @@ -214,11 +224,13 @@ $ docker-compose scale web=3 db=2 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 #### `start` + 格式为 `docker-compose start [SERVICE...]`。 启动已经存在的服务容器。 #### `stop` + 格式为 `docker-compose stop [options] [SERVICE...]`。 停止已经处于运行状态的容器,但不删除它。通过 `docker-compose start` 可以再次启动这些容器。 @@ -232,11 +244,13 @@ $ docker-compose scale web=3 db=2 查看各个服务容器内运行的进程。 #### `unpause` + 格式为 `docker-compose unpause [SERVICE...]`。 恢复处于暂停状态中的服务。 #### `up` + 格式为 `docker-compose up [options] [SERVICE...]`。 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。 @@ -270,6 +284,11 @@ $ docker-compose scale web=3 db=2 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 #### `version` + 格式为 `docker-compose version`。 打印版本信息。 + +### 参考资料 + +* [官方文档](https://docs.docker.com/compose/reference/overview/) diff --git a/compose/compose_file.md b/compose/compose_file.md index f113838..d41ea41 100644 --- a/compose/compose_file.md +++ b/compose/compose_file.md @@ -18,7 +18,7 @@ services: 注意每个服务都必须通过 `image` 指令指定镜像或 `build` 指令(需要 Dockerfile)等来自动构建生成镜像。 -如果使用 `build` 指令,在 `Dockerfile` 中设置的选项(例如:`CMD`, `EXPOSE`, `VOLUME`, `ENV` 等) 将会自动被获取,无需在 `docker-compose.yml` 中再次设置。 +如果使用 `build` 指令,在 `Dockerfile` 中设置的选项(例如:`CMD`, `EXPOSE`, `VOLUME`, `ENV` 等) 将会自动被获取,无需在 `docker-compose.yml` 中重复设置。 下面分别介绍各个指令的用法。 @@ -460,7 +460,7 @@ sysctls: ### `volumes` -数据卷所挂载路径设置。可以设置宿主机路径 (`HOST:CONTAINER`) 或加上访问模式 (`HOST:CONTAINER:ro`)。 +数据卷所挂载路径设置。可以设置为宿主机路径(`HOST:CONTAINER`)或者数据卷名称(`VOLUME:CONTAINER`),并且可以设置访问模式 (`HOST:CONTAINER:ro`)。 该指令中路径支持相对路径。 @@ -471,6 +471,21 @@ volumes: - ~/configs:/etc/configs/:ro ``` +如果路径为数据卷名称,必须在文件中配置数据卷。 + +```yaml +version: "3" + +services: + my_src: + image: mysql:8.0 + volumes: + - mysql_data:/var/lib/mysql + +volumes: + mysql_data: +``` + ### 其它指令 此外,还有包括 `domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir` 等指令,基本跟 `docker run` 中对应参数的功能一致。 @@ -557,3 +572,7 @@ MONGO_VERSION=3.6 ``` 执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器。 + +### 参考资料 + +* [官方文档](https://docs.docker.com/compose/compose-file/) diff --git a/compose/install.md b/compose/install.md index 2e72d84..47e91a8 100644 --- a/compose/install.md +++ b/compose/install.md @@ -4,14 +4,12 @@ `Compose` 可以通过 Python 的包管理工具 `pip` 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。 -前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。 - -`Docker for Mac` 、`Docker for Windows` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。 +`Docker Desktop` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。 ```bash $ docker-compose --version -docker-compose version 1.17.1, build 6d101fb +docker-compose version 1.24.1, build 4667896b ``` Linux 系统请使用以下介绍的方法安装。 @@ -23,7 +21,8 @@ Linux 系统请使用以下介绍的方法安装。 例如,在 Linux 64 位系统上直接下载对应的二进制包。 ```bash -$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose +$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose + $ sudo chmod +x /usr/local/bin/docker-compose ``` @@ -43,7 +42,7 @@ $ sudo pip install -U docker-compose ```bash Collecting docker-compose - Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded + Downloading docker-compose-1.24.1.tar.gz (149kB): 149kB downloaded ... Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress ``` @@ -51,66 +50,9 @@ Successfully installed docker-compose cached-property requests texttable websock ### bash 补全命令 ```bash -$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose +$ curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose ``` -### 容器中执行 - -Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。 - -```bash -$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose -$ chmod +x /usr/local/bin/docker-compose -``` - -实际上,查看下载的 `run.sh` 脚本内容,如下 - -```bash -set -e - -VERSION="1.8.0" -IMAGE="docker/compose:$VERSION" - - -# Setup options for connecting to docker host -if [ -z "$DOCKER_HOST" ]; then - DOCKER_HOST="/var/run/docker.sock" -fi -if [ -S "$DOCKER_HOST" ]; then - DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST" -else - DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH" -fi - - -# Setup volume mounts for compose config and context -if [ "$(pwd)" != '/' ]; then - VOLUMES="-v $(pwd):$(pwd)" -fi -if [ -n "$COMPOSE_FILE" ]; then - compose_dir=$(dirname $COMPOSE_FILE) -fi -# TODO: also check --file argument -if [ -n "$compose_dir" ]; then - VOLUMES="$VOLUMES -v $compose_dir:$compose_dir" -fi -if [ -n "$HOME" ]; then - VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config -fi - -# Only allocate tty if we detect one -if [ -t 1 ]; then - DOCKER_RUN_OPTIONS="-t" -fi -if [ -t 0 ]; then - DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i" -fi - -exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@" -``` - -可以看到,它其实是下载了 `docker/compose` 镜像并运行。 - ### 卸载 如果是二进制包方式安装的,删除二进制文件即可。 diff --git a/install/mac.md b/install/mac.md index d52916d..5059da1 100644 --- a/install/mac.md +++ b/install/mac.md @@ -44,11 +44,11 @@ $ brew cask install docker ```bash $ docker --version -Docker version 18.09.0, build 4d60db4 +Docker version 19.03.1, build 74b1e89 $ docker-compose --version -docker-compose version 1.23.2, build 1110ad01 +docker-compose version 1.24.1, build 4667896b $ docker-machine --version -docker-machine version 0.16.0, build 702c267f +docker-machine version 0.16.1, build cce350d7 ``` 如果 `docker version`、`docker info` 都正常的话,可以尝试运行一个 [Nginx 服务器](https://hub.docker.com/_/nginx/): diff --git a/manifest b/manifest new file mode 100644 index 0000000..26541a2 --- /dev/null +++ b/manifest @@ -0,0 +1,7 @@ +DOCKER_VERSION=19.03.1 +DOCKER_COMPOSE_VERSION=1.24.1 +DOCKER_MACHINE_VERSION=0.13.0 +ETCD_VERSION=3.4.0 +KUBERNETES_VERSION=1.14.3 +UBUNTU=18.04 +DEBIAN=9