Docker Compose 安装与卸载

支持平台

Compose 支持 Linux、macOS、Windows 和 Windows Server 等平台。

Docker for MacDocker for Windows 本身自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用 Compose,因此这两种无需单独安装 Compose

详细安装查看官方文档:

  1. Docker for Mac 安装 Docker
  2. Docker for Windows 安装 Docker

安装方式

对于 Linux 系统来说,在安装 Docker 时本身不提供 docker-compose 二进制文件,因此需要单独安装 docker-compose 来支持 Compose 功能。

  • 按照 官方文档 提供有 3 种方式安装:
    1. 下载 Docker Compose 二进制文件来安装
    2. 使用 pip 安装 Docker Compose(这种方式先不做介绍了)
    3. 使用容器来安装 Docker Compose

安装方法

下面是 Linux 系统上介绍两种方法来安装 Docker Compose

在安装之前,我们来测试一波是否已安装 docker-compose,如果已经安装,以下可忽略


$ sudo docker-compose --version

# 如果未安装:
-bash: docker-compose: command not found

# 如果已经安装:
docker-compose version 1.24.1, build 6d101fb

1. 使用下载二进制包安装 Compose

在 Linux 上安装十分简单方便,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

栗子:在 Linux 64 位系统上直接下载对应的二进制包。


# 运行此命令下载 Docker Compose 的当前稳定版本:1.24.1
$ 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

2. 使用容器来安装 Docker Compose(推荐方式)

Compose也可以在一个容器内运行,自然就可以用容器去执行它:


$ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.24.1/run.sh -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

实际上,通过查看下载的 run.sh 脚本内容

#!/bin/sh
#
# Run docker-compose in a container
#
# This script will attempt to mirror the host paths by using volumes for the
# following paths:
#   * $(pwd)
#   * $(dirname $COMPOSE_FILE) if it's set
#   * $HOME if it's set
#
# You can add additional volumes (or any docker run options) using
# the $COMPOSE_OPTIONS environment variable.
#


set -e

VERSION="1.24.1"
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_OPTIONS="$COMPOSE_OPTIONS -e COMPOSE_FILE=$COMPOSE_FILE"
    compose_dir=$(realpath $(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 0 -a -t 1 ]; then
        DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -t"
fi

# Always set -i to support piped and terminal input in run/exec
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"


# Handle userns security
if [ ! -z "$(docker info 2>/dev/null | grep userns)" ]; then
    DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --userns=host"
fi

exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"

我们可以发现,实际上,它是通过容器下载了 docker/compose 镜像并运行。

卸载

如果是二进制包和容器方式安装,删除二进制文件即可。


$ sudo rm /usr/local/bin/docker-compose

上次更新: 2020-5-10 1:34:13 PM