[Compose] Update to v1.24.1

Signed-off-by: khs1994 <khs1994@khs1994.com>
This commit is contained in:
khs1994 2019-09-01 14:46:33 +08:00
parent 6bca9e8dff
commit 7ec38273bb
7 changed files with 64 additions and 77 deletions

View File

@ -21,11 +21,11 @@ about: Create a report to help us improve
* [x] Others (Pls describe below) * [x] Others (Pls describe below)
### Docker Version ### Docker Version
<!--如果你的 Docker 版本低于 18.09 请尽可能升级到该版本,保留你的 Docker 版本,其他选项删除--> <!--如果你的 Docker 版本低于 19.03 请尽可能升级到该版本,保留你的 Docker 版本,其他选项删除-->
<!--if Docker version under 18.09, please upgrade Docker to 18.09--> <!--if Docker version under 19.03, please upgrade Docker to 19.03-->
* [x] Edge (v18.09) * [x] Edge (v19.03)
* [x] Stable (v18.09) * [x] Stable (v19.03)
* [x] 1.13.0 or Before * [x] 1.13.0 or Before
### Problem Description ### Problem Description

View File

@ -21,11 +21,11 @@ about: Create a issue about Docker
* [x] Others (Pls describe below) * [x] Others (Pls describe below)
### Docker Version ### Docker Version
<!--如果你的 Docker 版本低于 18.09 请尽可能升级到该版本,保留你的 Docker 版本,其他选项删除--> <!--如果你的 Docker 版本低于 19.03 请尽可能升级到该版本,保留你的 Docker 版本,其他选项删除-->
<!--if Docker version under 18.09, please upgrade Docker to 18.09--> <!--if Docker version under 19.03, please upgrade Docker to 19.03-->
* [x] Edge (v18.09) * [x] Edge (v19.03)
* [x] Stable (v18.09) * [x] Stable (v19.03)
* [x] 1.13.0 or Before * [x] 1.13.0 or Before
### Problem Description ### Problem Description

View File

@ -1,6 +1,7 @@
## Compose 命令说明 ## Compose 命令说明
### 命令对象与格式 ### 命令对象与格式
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。 执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。
@ -66,6 +67,7 @@ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
列出 Compose 文件中包含的镜像。 列出 Compose 文件中包含的镜像。
#### `kill` #### `kill`
格式为 `docker-compose kill [options] [SERVICE...]` 格式为 `docker-compose kill [options] [SERVICE...]`
通过发送 `SIGKILL` 信号来强制停止服务容器。 通过发送 `SIGKILL` 信号来强制停止服务容器。
@ -77,6 +79,7 @@ $ docker-compose kill -s SIGINT
``` ```
#### `logs` #### `logs`
格式为 `docker-compose logs [options] [SERVICE...]` 格式为 `docker-compose logs [options] [SERVICE...]`
查看服务容器的输出。默认情况下docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。 查看服务容器的输出。默认情况下docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。
@ -84,11 +87,13 @@ $ docker-compose kill -s SIGINT
该命令在调试问题的时候十分有用。 该命令在调试问题的时候十分有用。
#### `pause` #### `pause`
格式为 `docker-compose pause [SERVICE...]` 格式为 `docker-compose pause [SERVICE...]`
暂停一个服务容器。 暂停一个服务容器。
#### `port` #### `port`
格式为 `docker-compose port [options] SERVICE PRIVATE_PORT` 格式为 `docker-compose port [options] SERVICE PRIVATE_PORT`
打印某个容器端口所映射的公共端口。 打印某个容器端口所映射的公共端口。
@ -100,6 +105,7 @@ $ docker-compose kill -s SIGINT
* `--index=index` 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1 * `--index=index` 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1
#### `ps` #### `ps`
格式为 `docker-compose ps [options] [SERVICE...]` 格式为 `docker-compose ps [options] [SERVICE...]`
列出项目中目前的所有容器。 列出项目中目前的所有容器。
@ -109,6 +115,7 @@ $ docker-compose kill -s SIGINT
* `-q` 只打印容器的 ID 信息。 * `-q` 只打印容器的 ID 信息。
#### `pull` #### `pull`
格式为 `docker-compose pull [options] [SERVICE...]` 格式为 `docker-compose pull [options] [SERVICE...]`
拉取服务依赖的镜像。 拉取服务依赖的镜像。
@ -122,6 +129,7 @@ $ docker-compose kill -s SIGINT
推送服务依赖的镜像到 Docker 镜像仓库。 推送服务依赖的镜像到 Docker 镜像仓库。
#### `restart` #### `restart`
格式为 `docker-compose restart [options] [SERVICE...]` 格式为 `docker-compose restart [options] [SERVICE...]`
重启项目中的服务。 重启项目中的服务。
@ -131,6 +139,7 @@ $ docker-compose kill -s SIGINT
* `-t, --timeout TIMEOUT` 指定重启前停止容器的超时(默认为 10 秒)。 * `-t, --timeout TIMEOUT` 指定重启前停止容器的超时(默认为 10 秒)。
#### `rm` #### `rm`
格式为 `docker-compose rm [options] [SERVICE...]` 格式为 `docker-compose rm [options] [SERVICE...]`
删除所有(停止状态的)服务容器。推荐先执行 `docker-compose stop` 命令来停止容器。 删除所有(停止状态的)服务容器。推荐先执行 `docker-compose stop` 命令来停止容器。
@ -195,6 +204,7 @@ $ docker-compose run --no-deps web python manage.py shell
* `-T` 不分配伪 tty意味着依赖 tty 的指令将无法运行。 * `-T` 不分配伪 tty意味着依赖 tty 的指令将无法运行。
#### `scale` #### `scale`
格式为 `docker-compose scale [options] [SERVICE=NUM...]` 格式为 `docker-compose scale [options] [SERVICE=NUM...]`
设置指定服务运行的容器个数。 设置指定服务运行的容器个数。
@ -214,11 +224,13 @@ $ docker-compose scale web=3 db=2
* `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。
#### `start` #### `start`
格式为 `docker-compose start [SERVICE...]` 格式为 `docker-compose start [SERVICE...]`
启动已经存在的服务容器。 启动已经存在的服务容器。
#### `stop` #### `stop`
格式为 `docker-compose stop [options] [SERVICE...]` 格式为 `docker-compose stop [options] [SERVICE...]`
停止已经处于运行状态的容器,但不删除它。通过 `docker-compose start` 可以再次启动这些容器。 停止已经处于运行状态的容器,但不删除它。通过 `docker-compose start` 可以再次启动这些容器。
@ -232,11 +244,13 @@ $ docker-compose scale web=3 db=2
查看各个服务容器内运行的进程。 查看各个服务容器内运行的进程。
#### `unpause` #### `unpause`
格式为 `docker-compose unpause [SERVICE...]` 格式为 `docker-compose unpause [SERVICE...]`
恢复处于暂停状态中的服务。 恢复处于暂停状态中的服务。
#### `up` #### `up`
格式为 `docker-compose up [options] [SERVICE...]` 格式为 `docker-compose up [options] [SERVICE...]`
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
@ -270,6 +284,11 @@ $ docker-compose scale web=3 db=2
* `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。
#### `version` #### `version`
格式为 `docker-compose version` 格式为 `docker-compose version`
打印版本信息。 打印版本信息。
### 参考资料
* [官方文档](https://docs.docker.com/compose/reference/overview/)

View File

@ -18,7 +18,7 @@ services:
注意每个服务都必须通过 `image` 指令指定镜像或 `build` 指令(需要 Dockerfile等来自动构建生成镜像。 注意每个服务都必须通过 `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` ### `volumes`
数据卷所挂载路径设置。可以设置宿主机路径 `HOST:CONTAINER` 或加上访问模式 `HOST:CONTAINER:ro`)。 数据卷所挂载路径设置。可以设置为宿主机路径(`HOST:CONTAINER`)或者数据卷名称(`VOLUME:CONTAINER`),并且可以设置访问模式 `HOST:CONTAINER:ro`)。
该指令中路径支持相对路径。 该指令中路径支持相对路径。
@ -471,6 +471,21 @@ volumes:
- ~/configs:/etc/configs/:ro - ~/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` 中对应参数的功能一致。 此外,还有包括 `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` 镜像的容器。 执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器。
### 参考资料
* [官方文档](https://docs.docker.com/compose/compose-file/)

View File

@ -4,14 +4,12 @@
`Compose` 可以通过 Python 的包管理工具 `pip` 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。 `Compose` 可以通过 Python 的包管理工具 `pip` 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。
前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。 `Docker Desktop` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。
`Docker for Mac``Docker for Windows` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。
```bash ```bash
$ docker-compose --version $ docker-compose --version
docker-compose version 1.17.1, build 6d101fb docker-compose version 1.24.1, build 4667896b
``` ```
Linux 系统请使用以下介绍的方法安装。 Linux 系统请使用以下介绍的方法安装。
@ -23,7 +21,8 @@ Linux 系统请使用以下介绍的方法安装。
例如,在 Linux 64 位系统上直接下载对应的二进制包。 例如,在 Linux 64 位系统上直接下载对应的二进制包。
```bash ```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 $ sudo chmod +x /usr/local/bin/docker-compose
``` ```
@ -43,7 +42,7 @@ $ sudo pip install -U docker-compose
```bash ```bash
Collecting docker-compose 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 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 补全命令
```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` 镜像并运行。
### 卸载 ### 卸载
如果是二进制包方式安装的,删除二进制文件即可。 如果是二进制包方式安装的,删除二进制文件即可。

View File

@ -44,11 +44,11 @@ $ brew cask install docker
```bash ```bash
$ docker --version $ docker --version
Docker version 18.09.0, build 4d60db4 Docker version 19.03.1, build 74b1e89
$ docker-compose --version $ 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
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/) 如果 `docker version``docker info` 都正常的话,可以尝试运行一个 [Nginx 服务器](https://hub.docker.com/_/nginx/)

7
manifest Normal file
View File

@ -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