docker(5)docker-compose

一 什么是 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 处直接下载编译好的二进制文件即可。

[root@zhuyc ~] 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
[root@zhuyc ~] cd /usr/local/bin/
[root@zhuyc bin] chmod +x /usr/local/bin/docker-compose
[root@zhuyc bin] docker-compose --version
docker-compose version 1.25.0, build 0a186604

bash命令补全

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

扫描二维码关注公众号,回复: 8816418 查看本文章
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 一个基本的项目

在这里插入图片描述
注意点

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

六 yaml配置文件

参考:yaml配置文件

参考

千锋-docker-compose

发布了82 篇原创文章 · 获赞 1 · 访问量 1979

猜你喜欢

转载自blog.csdn.net/m0_38060977/article/details/103232657