[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)
### Docker Version
<!--如果你的 Docker 版本低于 18.09 请尽可能升级到该版本保留你的 Docker 版本其他选项删除-->
<!--if Docker version under 18.09, please upgrade Docker to 18.09-->
<!--如果你的 Docker 版本低于 19.03 请尽可能升级到该版本保留你的 Docker 版本其他选项删除-->
<!--if Docker version under 19.03, please upgrade Docker to 19.03-->
* [x] Edge (v18.09)
* [x] Stable (v18.09)
* [x] Edge (v19.03)
* [x] Stable (v19.03)
* [x] 1.13.0 or Before
### Problem Description

View File

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

View File

@ -1,6 +1,7 @@
## Compose 命令说明
### 命令对象与格式
对于 Compose 来说大部分命令的对象既可以是项目本身也可以指定为项目中的服务或者容器如果没有特别的说明命令对象将是项目这意味着项目中所有的服务都会受到命令影响
执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式
@ -66,6 +67,7 @@ docker-compose [-f=<arg>...] [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/)

View File

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

View File

@ -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` 镜像并运行
### 卸载
如果是二进制包方式安装的删除二进制文件即可

View File

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

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