24.2 安装与卸载

Compose目前支持Linux和Mac OS平台,两者的安装过程大同小异。

安装Compose之前,要先安装Docker(需要Docker Engine 1.7.1+),详细步骤请参考第一部分中的内容。

Compose可以通过Python的pip工具进行安装,可以直接下载编译好的二进制文件使用,甚至直接运行在Docker容器中。

前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。

1.pip安装

这种方式是将Compose当作一个Python应用来从pip源中安装。

执行安装命令:


  1. $ sudo pip install -U docker-compose

可以看到类似如下输出,说明安装成功:


  1. Collecting docker-compose
  2. Downloading docker-compose-1.8.0.tar.gz (149kB): 149kB downloaded
  3. ...
  4. Successfully installed docker-compose cached-property requests texttable websocket-
  5. client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress

安装成功后,可以查看docker-compose命令的用法:


  1. $ docker-compose -h
  2. Define and run multi-container applications with Docker.
  3. Usage:
  4. docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
  5. docker-compose -h|--help
  6. Options:
  7. -f, --file FILE Specify an alternate compose file (default:
  8. docker-compose.yml)
  9. -p, --project-name NAME Specify an alternate project name (default:
  10. directory name)
  11. --x-networking (EXPERIMENTAL) Use new Docker networking
  12. functionality.
  13. Requires Docker 1.9 or later.
  14. --x-network-driver DRIVER (EXPERIMENTAL) Specify a network driver (default:
  15. "bridge").
  16. Requires Docker 1.9 or later.
  17. --verbose Show more output
  18. -v, --version Print version and exit
  19. Commands:
  20. build Build or rebuild services
  21. help Get help on a command
  22. kill Kill containers
  23. logs View output from containers
  24. pause Pause services
  25. port Print the public port for a port binding
  26. ps List containers
  27. pull Pulls service images
  28. restart Restart services
  29. rm Remove stopped containers
  30. run Run a one-off command
  31. scale Set number of containers for a service
  32. start Start services
  33. stop Stop services
  34. unpause Unpause services
  35. up Create and start containers
  36. migrate-to-labels Recreate containers to add labels
  37. version Show the Docker-Compose version information

之后,可以添加bash补全命令:


  1. $ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion
  2. /bash/docker-compose > /etc/bash_completion.d/docker-compose

2.二进制包

官方定义编译好二进制包,供大家使用。这些发布的二进制包可以在https://github.com/docker/compose/releases页面找到。

这些二进制文件,下载后直接放到执行路径下,并添加执行权限即可。例如,在Linux平台上:


  1. $ sudo curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-
  2. compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  3. $ sudo chmod a+x /usr/local/bin/docker-compose

可以使用docker-compose version命令来查看版本信息,以测试是否安装成功:


  1. $ docker-compose version
  2. docker-compose version 1.8.0, build 94f7016
  3. docker-py version: 1.9.0
  4. CPython version: 2.7.6
  5. OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014

3.容器中执行

Compose既然是一个Python应用,自然也可以直接用容器来执行它:


  1. $ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh >
  2. /usr/local/bin/docker-compose
  3. $ chmod +x /usr/local/bin/docker-compose

实际上,查看下载的run.sh脚本内容,如下所示:


  1. set -e
  2. VERSION="1.8.0"
  3. IMAGE="docker/compose:$VERSION"
  4. # Setup options for connecting to docker host
  5. if [ -z "$DOCKER_HOST" ]; then
  6. DOCKER_HOST="/var/run/docker.sock"
  7. fi
  8. if [ -S "$DOCKER_HOST" ]; then
  9. DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
  10. else
  11. DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
  12. fi
  13. # Setup volume mounts for compose config and context
  14. if [ "$(pwd)" != '/' ]; then
  15. VOLUMES="-v $(pwd):$(pwd)"
  16. fi
  17. if [ -n "$COMPOSE_FILE" ]; then
  18. compose_dir=$(dirname $COMPOSE_FILE)
  19. fi
  20. # TODO: also check --file argument
  21. if [ -n "$compose_dir" ]; then
  22. VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
  23. fi
  24. if [ -n "$HOME" ]; then
  25. VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to
  26. share docker.config
  27. fi
  28. # Only allocate tty if we detect one
  29. if [ -t 1 ]; then
  30. DOCKER_RUN_OPTIONS="-t"
  31. fi
  32. if [ -t 0 ]; then
  33. DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
  34. fi
  35. exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES
  36. -w "$(pwd)" $IMAGE "$@"

可以看到,它其实是下载了docker/compose镜像并运行。

4.卸载

如果是二进制包方式安装的,删除二进制文件即可:


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

如果是通过Python pip工具安装的,则可以执行如下命令删除:


  1. $ sudo pip uninstall docker-compose