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 处直接下载编译好的二进制文件即可。
[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#端口映射
注意:
- 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 一个基本的项目
注意点
- mysql-data类似于
变量名
。应该是用来复用的。在volumes中集体指定具体的路径,不写就是默认路径 - 注意这里的
command
.直接指定了mysql的配置文件中的属性
六 yaml配置文件
参考:yaml配置文件