docker compose dns 缓存_Docker 容器编排利器 Docker Compose

Compose 简介

  通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如之前我给大家讲过的《Docker 搭建 Redis Cluster 集群环境 》,或者开发一个 Web 应用,除了 Web 服务容器本身,还需要数据库服务容器、缓存容器,甚至还包括负载均衡容器等等。

  Docker Compose 恰好满足了这样的需求,它是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YAML 文件来配置应用程序所需要的服务。然后使用一个命令,就可以通过 YAML 配置文件创建并启动所有服务。

  Docker Compose 项目是 Docker 官方的开源项目,来源于之前的 Fig 项目,使用 Python 语言编写。负责实现对 Docker 容器集群的快速编排。项目地址为:https://github.com/docker/compose/releases

  Docker Compose 使用的三个步骤为:

  • 使用 Dockerfile 文件定义应用程序的环境;
  • 使用 docker-compose.yml 文件定义构成应用程序的服务,这样它们可以在隔离环境中一起运行;
  • 最后,执行 docker-compose up 命令来创建并启动所有服务。

Compose 安装

下载

  官方文档:https://docs.docker.com/compose/install/

  您可以在 macOS,Windows 和 Linux 上运行 Compose。本文演示基于 Linux 环境的安装。我们可以使用 curl 命令从 Github 下载它的二进制文件来使用,运行以下命令下载 Docker Compose 的当前稳定版本。或者从网页下载后上传至服务器指定目录 /usr/local/bin 也行。

 sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  因为 Docker Compose 存放在 GitHub,可能不太稳定。你也可以通过执行下面的命令,高速安装 Compose。该加速通道由 DaoCloud 提供:http://get.daocloud.io/#install-compose

 sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

  您可以通过修改 URL 中的版本,自定义您所需要的版本文件。

授权

  安装完成以后,查看指定目录,发现该文件没有可执行权限,进行授权操作。

519bc13fffc18769f5a0c99ad6e9bb42.png
 # 将可执行权限应用于该二进制文件 sudo chmod +x /usr/local/bin/docker-compose
52dbed4fde95d02e197056ab3a2472e4.png

测试

 docker-compose --version
a94ebe65d074a15ba4590a3cc11eb025.png

卸载

  卸载 Compose 非常简单,直接删除二进制文件即可。

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

docker-compose.yml 文件详解

概念

  官方文档:https://docs.docker.com/compose/compose-file/

  Docker Compose 允许用户通过 docker-compose.yml 文件(YAML 格式)来定义一组相关联的容器为一个工程(project)。一个工程包含多个服务(service),每个服务中定义了创建容器时所需的镜像、参数、依赖等。

工程名若无特殊指定,即为 docker-compose.yml 文件所在目录的名称。

  Docker Compose 模板文件我们需要关注的顶级配置有 version、services、networks、volumes 几个部分,除 version 外,其他几个顶级配置下还有很多下级配置,后面也会详细给大家介绍,先来看看这几个顶级配置都什么意思:

  • version:描述 Compose 文件的版本信息,当前最新版本为 3.8,对应的 Docker 版本为 19.03.0+;
  • services:定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等;
  • networkds:定义网络,可以多个,根据 DNS server 让相同网络中的容器可以直接通过容器名称进行通信;
  • volumes:数据卷,用于实现目录挂载。

案例

  在配置文件中,所有的容器通过 services 来定义,然后使用 docker-compose 脚本来启动,停止和重启容器,非常适合多个容器组合使用进行开发的场景。我们先从一个简单的 Compose 案例学起。

  编写 docker-compose.yml 文件。

 # 创建目录 mkdir -p /usr/local/docker-nginx # 切换至指定目录 cd /usr/local/docker-nginx/ # 编写 docker-compose.yml 文件 vi docker-compose.yml

  在文件中添加以下内容:

 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务,可以多个 services:   nginx: # 服务名称     image: nginx # 创建容器时所需的镜像     container_name: mynginx # 容器名称,默认为"工程名称_服务条目名称_序号"     ports: # 宿主机与容器的端口映射关系       - "80:80" # 左边宿主机端口:右边容器端口     networks: # 配置容器连接的网络,引用顶级 networks 下的条目       - nginx-net  # 定义网络,可以多个。如果不声明,默认会创建一个网络名称为"工程名称_default"的 bridge 网络 networks:   nginx-net: # 一个具体网络的条目名称     name: nginx-net # 网络名称,默认为"工程名称_网络条目名称"     driver: bridge # 网络模式,默认为 bridge

  使用 docker-compose up 创建并启动所有服务。这个简单的案例中就只有一个 Nginx 后续我们会来一些复杂的练习:

 # 前台启动 docker-compose up # 后台启动 docker-compose up -d
6a371de041f96b35e2d39666568e9ddf.png

  浏览器访问:http://192.168.10.10/ 结果如下:

cd2a621b5beb1e0d195229fe9c660815.png

  使用 docker-compose down 可以停止并删除容器、网络。

337fe07ed2357482ee6622f857aa35e2.png

version

  描述 Compose 文件的版本信息,当前最新版本为 3.8,对应的 Docker 版本为 19.03.0+。关于每个版本的详细信息请参考:https://docs.docker.com/compose/compose-file/compose-versioning/

  以下为 Compose 文件的版本信息所对应的 Docker 版本。

11d34d176a8eb0345312229406f83deb.png

services

  刚才我们提到 docker-compose.yml 文件中包含很多下级配置项,下面带大家把一些常用的配置项详细了解一下,先从顶级配置 services 开始。

  services 用来定义服务,可以多个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值