什么是Docker Compose
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
概述
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。
Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。
在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
安装Docker Compose
Compose支持Windows10、Liunx、macOS三大平台,在Liunx上安装也十分方便,从这里直接下载编译好的二进制文件即可。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
验证安装是否成功
docker-compose version
#输出如下,即为成功安装
Docker Compose的使用
术语
首先介绍几个术语
- 服务:一个应用容器,实际可以实行多个相同的镜像实例。
- 项目:由一组关联的应用容器组成的一个完整的业务单元。
可见,一个项目可由多个服务(容器)关联而成,Compose面向项目行管理。
修改IP和DNS
如果采用多虚拟机模拟分布式场景,为防止IP冲突,无法联网等问题,需要预先设置好主机名,IP,DNS配置
修改主机名
- 修改cloud.cfg文件,防止重启后主机名还原。
vi /etc/cloud/colud.cfg
#该配置默认为false,修改为true即可
preserve_hostname: true
- 修改主机名
#修改主机名
hostnamectl set-hostname xxxxxx
#配置hosts
cat >> /etc/hosts <<EOF
192.168.145.131 xxxxxx(上面修改的主机名)
EOF
修改IP
编辑 vi /etc/netplan/50-cloud-init.yaml
配置文件,修改内容如下
network:
ethernets:
ens33:
addresses: [192.168.145.131/24]
gateway4: 192.168.145.2
nameservers:
addresses: [192.168.145.2]
version: 2
使用netplan apply
命令让配置生效
修改DNS
这里有两种方式可以修改
- 可以在上面yml的配置中加入
addresses: [192.168.145.2,114.114.114.114]
即可完成配置
vi /etc/systemd/resolved.conf
#取消DNS行注释,并增加 DNS 配置:114.114.114.114,修改后重启下计算机
完成后可以使用ping
命令测试是否配置成功。