欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker(5)docker-compose

程序员文章站 2022-03-12 09:50:32
...

一 什么是 Docker Compose

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速部署分布式应用

Compose 定位是 「定义和运行多个 Docker 容器`的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。

通过第一部分中的介绍,我们知道使用一个 Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

1.1 两个重要的概念

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
    Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

个人小结
一个porject至少包含一个service。多个service配合组成,形成了一个project。比如tomcat\mysq\redis等等

Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

二 安装和卸载

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

2.1 二进制包安装

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

[aaa@qq.com ~] curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    111      0 --:--:--  0:00:05 --:--:--   153
100 16.2M  100 16.2M    0     0   454k      0  0:00:36  0:00:36 --:--:-- 1296k
[aaa@qq.com ~] cd /usr/local/bin/
[aaa@qq.com bin] chmod +x /usr/local/bin/docker-compose
[aaa@qq.com bin] docker-compose --version
docker-compose version 1.25.0, build 0a186604

bash命令补全

这里不太清楚原因,直接照搬原文的

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

2.2 卸载

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

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

三 使用

3.1 编写yml文件

先创建一个空目录,再目录中编写配置文件docker-compose.yml

version: '3'
services:
  tomcat:#服务名,随便起
    restart: always#开启自动重启
    image: tomcat
    container_name: tomcat#容器名
    ports:
      - 8080:8080#端口映射

注意:

  1. yml不能有制表符,只能用空格

3.2 运行compose项目

docker-compose up

docker-compose必须在有docker-compose.yml的目录下执行,因为这个指定了上下文.也可以用-f指定文件目录

3.3 删除容器

docker-compose down

四 Docker Compose 命令说明

4.1 命令对象与格式

对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。

执行 docker-compose [COMMAND] --help 或者 docker-compose help [COMMAND] 可以查看具体某个命令的使用格式。

docker-compose 命令的基本的使用格式是

docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]

4.2 命令选项

  • -f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
  • -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
  • –x-networking 使用 Docker 的可拔插网络后端特性
  • –x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge
  • –verbose 输出更多调试信息。
  • -v, --version 打印版本并退出

4.3 更多命令

具体参考:千锋教育-命令使用说明

五 例子

5.1 一个基本的项目

docker(5)docker-compose
注意点

  1. mysql-data类似于变量名。应该是用来复用的。在volumes中集体指定具体的路径,不写就是默认路径
  2. 注意这里的command.直接指定了mysql的配置文件中的属性

六 yaml配置文件

参考:yaml配置文件

参考

千锋-docker-compose