Docker Compose 简介与安装全述
Docker Compose 简介
Compose是Docker官方的开源项目(源码地址:https://github.com/docker/compose),其前身是开源项目Fig,用于定义和运行多容器Docker应用程序的工具,Compose负责实现对Docker容器集群的快速编排。
实际应用中,即使单点服务,也会包含应用服务器、数据库服务器、负载服务器等基本服务,使用dockerfile
对这些服务器进行处理,会十分繁琐,而且随着应用的横向扩展或者微服务化,这项工作会变得十分困难。Compose恰好能解决这样的问题,可以通过一个单独的docker-compose.yml
处理一组相关联的应用容器。
Compose的两个重要概念:
· 服务(service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
· 项目(project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
中定义。
Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose应用的三个步骤:
· 通过dockerfile
定义应用程序的环境。
· 通过docker-compose.yml
定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
· 执行docker-compose up
命令来启动并运行整个应用程序。
Docker Compose 安装
Compose支持Linux、MacOS、Windows 10三大平台。
Compose可以通过以下三种方式进行安装:
1) 通过Python的包管理工具pip
安装。
① 确认pip
是否已安装。
pip --version
② 若pip
没有安装,先安装pip
。
yum -y install epel-release
yum -y install python-pip
③ 再次确认pip
是否安装。
出现图中具体版本说明安装成功。
④ pip
版本过低会导致Compose安装失败。
⑤ 升级pip
版本。
pip install --upgrade pip
⑥ 通过pip
安装Compose。
pip install docker-compose
⑦ 确认Compose是否安装成功。
⑧ 通过pip
卸载Compose。
pip uninstall docker-compose
2) 二进制文件方式安装。
① 访问https://github.com/docker/compose/releases,选择适合所用平台的文件下载,本文选择1.27.4
版本的docker-compose-Linux-x86_64
。
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
② 对二进制文件授予应用可执行权限。
chmod +x /usr/local/bin/docker-compose
③ 确认Compose是否安装成功。
④ 直接卸载Compose。
只需删除docker-compose
执行文件即可。
rm -rf /usr/local/bin/docker-compose
3) 在Docker中运行。
Compose既然是一个应用,自然可以直接用容器执行它。
① 下载Compose执行脚本run.sh
,并赋予权限。
curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
② 查看Compose执行脚本即run.sh
。
#!/bin/bash
#
# 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.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 "[email protected]"
可以看到,run.sh
实际是下载并运行了镜像。
③ 确认Compose是否安装成功。
docker-compose version
④ 直接卸载Compose。
只需删除Compose执行脚本(即run.sh
,本机的/usr/local/bin/docker-compose
)即可。
总结
前两种方式是传统方式,适合本地环境中安装使用,最后一种方式不会破坏系统环境,更适合云应用场景。
若文中存在错误和不足,欢迎指正