Docker Compose 简介

2019-12-22 container

Docker Compose 是 Docker 官方编排项目,用于快速的部署应用。通过 DockerFile 可以快速生成一个容器,如果要多个容器配合使用,那么就可以通过该编排工具完成。

简介

通过一个单独的 docker-compose.yml 模板文件定义一组相关联的应用容器作为一个项目,其中有两个比较重要的概念:

  • 服务 Service,一个应用容器,可以包括若干运行相同镜像的容器实例。
  • 项目 Project,由一组关联的应用容器组成的一个完整业务单元,在配置文件中定义。

Compose 最开始由 Python 编写,后来应该是通过 GoLang 进行了重写,通过调用 Docker 服务提供的 API 来对容器进行管理。

安装

在 V2 版本中可以作为 Docker 的插件或者单独使用。

----- 可以直接根据OS安装插件
# apt-get install docker-compose-plugin
# yum install docker-compose-plugin

也可以从 Github Releases 下载相关的二进制,保存在 docker 插件所在目录,其中用户级别在 ~/.docker/cli-plugins,系统级为 /usr/local/lib/docker/cli-plugins

示例

这里使用的是 Dockerfile 简介 中的示例镜像,然后创建 docker-compose.yml 文件,内容如下。

version: '3'
services:
  web:
    build: .                # 可以通过Dockerfile构建
    ports: .
      - "8000:5000"         # 端口映射 Host:Container,也可以指定IP地址
  foobar:
    image: foobar:latest    # 指定镜像
    container_name: foobar  # 容器名
    restart: always         # 退出后立即重启
    volumes:                # 配置数据卷,Host:Container:ro
      - /opt/foobar/data:/usr/foobar/data:rw
    environment:            # 指定环境变量
      - TZ=Asia/Shanghai
    ports:
      - "127.0.0.1:3030:2000"

最后,通过 docker-compose up 命令启动即可,可以通过 -f 参数指定文件。

常用命令

----- 默认从当前目录读取compose.yaml文件启动
docker compose up -d -f compose.yaml
----- 连接到某个服务
docker compose exec -it foobar /bin/sh
----- 查看某个服务的日志
docker compose logs -f foobar

参考