Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,本文主要介绍 Docker Compose的配置及使用。

1、Docker Compose 简介

Docker-Compose项目是Docker官方开源的项目,实现对Docker容器集群的快速编排。Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

Docker Compose 可以通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker Compose V1项目是由Python编写,Docker Compose V2已经用Golang语言从头开始完全重写,调用Docker服务提供的API来对容器进行管理。则只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

2、Docker Compose安装

Mac 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,则 Mac 用户不需要单独安装 Compose。Windows 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,则 Windows 用户不需要单独安装 Compose。Linux安装Docker Compose可以直接下载二进制包来使用,也可以用过命令下载安装Docker Compose。

1)下载二进制包

下载地址https://github.com/docker/compose/releases

2)使用命令下载安装

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.8.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

注意:要安装其他版本的Docker Compose,替换 1.8.0成需要安装的版本。

3)验证是否安装成功

$ docker-compose --version
docker-compose version 1.8.0, build f3628c7

3、Docker Compose使用

1)创建docker-compose.yml 配置文件

vim docker-compose.yml

内容如下:

version: '2'
services:
  web:
    image: dockercloud/hello-world
    ports:
      - 8080
    networks:
      - front-tier
      - back-tier
  redis:
    image: redis
    links:
      - web
    networks:
      - back-tier
  lb:
    image: dockercloud/haproxy
    ports:
      - 80:80
    links:
      - web
    networks:
      - front-tier
      - back-tier
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock 
networks:
  front-tier:
    driver: bridge
  back-tier:
driver: bridge

2)通过docker-compose命令运行docker-compose.yml文件

sudo ./docker-compose up 

相关文档:Docker Compose中.yml模板文件

4、docker-compose常用命令

相关文档docker-compose命令使用及说明

1)启动所有服务

docker-compose up

注意:需要后台启动使用docker-compose up -d

-f 指定使用的Compose模板文件,默认为docker-compose.yml:

$ docker-compose -f docker-compose.yml up -d

2)列出项目中目前所有的容器:

docker-compose ps

3)启动已经存在的服务容器

docker-compose start

4)停止正在运行的容器

docker-compose stop

5)重启项目中的服务

docker-compose restart

注意:-t, –timeout TIMEOUT,指定重启前停止容器的超时(默认为10秒)

6)停止和删除容器、网络、卷、镜像

docker-compose down

7)查看服务容器的日志输出

docker-compose logs

8)构建(重新构建)项目中的服务容器

docker-compose build

选项:

–compress 通过gzip压缩构建上下环境

–force-rm 删除构建过程中的临时容器

–no-cache 构建镜像过程中不使用缓存

–pull 始终尝试通过拉取操作来获取更新版本的镜像

-m, –memory MEM为构建的容器设置内存大小

–build-arg key=val为服务设置build-time变量

9)拉取服务依赖的镜像

docker-compose pull

10)删除所有(停止状态的)服务容器

docker-compose rm

选项:

–f, –force,强制直接删除,包括非停止状态的容器

-v,删除容器所挂载的数据卷

11)指定服务上执行一个命令

docker-compose run

5、dockerfile、docker compose和k8s区别

1)dockerfile

从无到有的构建镜像,包括依赖环境、代码、中间件、数据库等。

2)docker-compose(docker-compose.yml )

是单机管理,编排容器,可以同时管理多个 container ,将多个相关的容器一次性启动,

3)k8s

多节点管理Docker

推荐文档