Overview of Docker Compose 译文

Docker Compose 是一个用来定义和执行多Docker容器程序的工具,如果使用Compose,你将可以使用一个YAML文件来配置你的应用的服务。然后,你可以使用一个单一的命令来读取配置,并创建和启动所有的服务。在学习所有关于Compose的特性之前,你可以看一下 特性列表
Compose 可以在所有的环境中运行,例如: 生产,staging,开发,测试 ,就像CI工作流一样。你可以在一些公共例子中学习到更多用法。
使用Compose一般都是如下三个步骤:
  1. 通过Dockerfile定义你的应用的环境,以至于你可以在任何地方复制它

  2. docker-compose.yml中定义所有组成你的应用的服务,以至于他们可以在一个隔离的环境中一起运行

  3. 执行docker-compose up 然后compose 会执行并启动你的整个应用

一个docker-compose.yml长得像下面这样:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}

更多的 Compose file 的信息,可以查询 compose文档

Compose 拥有很多管理你的应用的整个生命周期的命令

  • 启动、停止 和 重新构建服务
  • 观察正在运行的服务的状态
  • 流化正在运行的程序输出的日志
  • 在服务中执行一个一次性的命令

Compose 文档

  • [安装 Compose]
  • [Compose入门]
  • [使用Django入门]

特性

一下这些Compose的特性将非常有用

  • 一台宿主机上多环境隔离
  • 存储数据卷数据,当一个容器启动时
  • 仅当容器发生改变时重新创建
  • 在不同的环境中定义变量和组合

一台宿主机上多环境隔离

Compose 使用项目名来隔离不同的环境。你可以在不同的上下文中使用这个项目名称,比如:

  • 在一台开发宿主机上,创建多个单独环境的拷贝,比如你想为项目的每个特性分支运行一个稳定的拷贝环境
  • 在一台 CI 服务器上,为了防止相互之间的干扰,可以将项目名命为一个唯一的构建数字
  • 在一个共享宿主机或开发机上,要去阻止哪些拥有相同的服务名字的项目之间的相互干扰

默认的项目吗时项目的目录的名字,你可以使用-p来自定义一个项目名,或者使用COMPOSE_PROJECT_NAME来定义一个环境变量

当容器创建时,存储数据卷数据

Compose 存储所有你服务用到的数据卷。当执行docker-compose up 时,如果Compose发现之前有可用的容器运行时,会从旧的重启中拷贝起数据卷到新容器中,这个过程时为了确保数据卷中的数据不会丢失。

如果你在windows上使用docker-compose,你需要为了你这个特殊的需求而不得不添加一些环境变量,具体请看这里

只会在容器发生改变时重建容器

Compose 缓存了用于创建容器的配置。当你重启服务时,如果服务本身没有改变,Compose将复用之间已存在的容器,复用容器意味着你可以快速的改变你的环境

在不同的环境中定义变量和组合

Compose 支持的 Compose file中定义变量。你可以用这些变量来为不同的环境或不同的用户做定制。具体请看变量替换

你可以通过extends字段或者创建多个Compose file的方式扩展一个Compose file。详情请看extends

通用案例

Compose有很多使用方法。下面概述了一些通用的案例:

开发环境

当你想开发一个软件,让程序运行在一个隔离的环境中的能力和能预期交互的能力至关重要。Compose的命令行工具就拥有上述能力

Compose file提供了一种可以归档和配置应用服务的所有依赖(比如: 数据库、队列、缓存、web serivice API等)的方式。使用Compose的命令行工具,你可以静静用一个单独的命令(docker-compose up)就可以为依赖创建并运行一个或多个容器。

这些特性组合在一起就为开发者提供一个非常便利的方式去启动过一个项目。Compose 可以将一个多页的"开发者如门指引"简化为一个机器可读的Compose file文件和几个简单的命令。

自动化测试环境

每一一个持续集成或持续部署程序的重要组成部分是自动化测试套件。自动化端到端测试需要一个可以执行这些用例的环境。Compose就提供了一种便利的方式去创建或销毁(为执行你的测试用例的)隔离的测试环境。只要通过Compose file定义好整个环境,就可以可以通过几个简单的命令来创建或销毁这些环境

docker-compose up -d
./runt_tests
docker-compose down

单宿主机部署

Compose 很传统地一直聚焦于开发和测试工作流,但是随着每个版本的发展,我们会提供更多的生产导向的特性。你可以使用Compose来部署到一个远端的Docker引擎。这个Docker引起可能是个由Docker Machine (已淘汰)来控制的单实例,也可能是一整个 Docker Swarm(已淘汰) 集群

发行说明

想查看过去到现在的Docker Compose 的发行版本的更改的详细列表,清查看更改日志

获取帮助

Docker Compose 正在积极发展中。如果你去帮助,比如想做贡献,或者仅仅是想与一些志同道合的人来探讨这个项目,我们有开放一些渠道来用来交流。

  • 上报bug或特性请求:使用 issue tracker on Github
  • 实时与这个项目的人讨论: 在freenode IRC 上参加docker compose 频道
  • 贡献代码或文档的更改:在github上提交一个pull request

更多信息和资源,清浏览 帮助

docker-compose概述--翻译的更多相关文章

  1. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  2. 009.Docker Compose部署及基础使用

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...

  3. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  4. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  5. docker和docker compose安装使用、入门进阶案例

    一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...

  6. Docker Compose 引用环境变量

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...

  7. Linux系统上安装docker + Compose并创建WordPress

    安装docker可参考我的另一篇文章 安装Compose Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. 方法一 1 ...

  8. Docker学习笔记之编写 Docker Compose 项目

    0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...

  9. Docker学习笔记之常用的 Docker Compose 配置项

    0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...

  10. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

随机推荐

  1. 实现领域驱动设计 - 使用ABP框架 - 创建实体

    用例演示 - 创建实体 本节将演示一些示例用例并讨论可选场景. 创建实体 从实体/聚合根类创建对象是实体生命周期的第一步.聚合/聚合根规则和最佳实践部分建议为Entity类创建一个主构造函数,以保证创 ...

  2. 一文详解JackSon配置信息

    背景 1.1 问题 Spring Boot 在处理对象的序列化和反序列化时,默认使用框架自带的JackSon配置.使用框架默认的,通常会面临如下问题: Date返回日期格式(建议不使用Date,但老项 ...

  3. Tapdata 肖贝贝:实时数据引擎系列(六)-从 PostgreSQL 实时数据集成看增量数据缓存层的必要性

      摘要:对于 PostgreSQL 的实时数据采集, 业界经常遇到了包括:对源库性能/存储影响较大, 采集性能受限, 时间回退重新同步不支持, 数据类型较复杂等等问题.Tapdata 在解决 Pos ...

  4. Go flag 详解,实现二级子命令

    前言 日常开发使用到的命令行工具大都支持如下特性: 文档自动生成(如 -h --help) 多级子命令(如 docker exec -it) 支持参数(如 ls -color=auto) 长短选项(如 ...

  5. 【python】自动更新pu口袋校园活动

    [python]自动更新pu口袋校园活动 脚本目标: 1. 自动爬取pu口袋校园活动,筛选出需要的活动,此处我的筛选条件是线上活动,因为可以不用去就可以白嫖学时 2. 自动发送邮件到QQ邮箱,每次只发 ...

  6. 队列Q_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  7. 【机器学习基础】——另一个视角解释SVM

    SVM的另一种解释 前面已经较为详细地对SVM进行了推导,前面有提到SVM可以利用梯度下降来进行求解,但并未进行详细的解释,本节主要从另一个视角对SVM进行解释,首先先回顾之前有关SVM的有关内容,然 ...

  8. 「游戏引擎 浅入浅出」4.1 Unity Shader和OpenGL Shader

    「游戏引擎 浅入浅出」从零编写游戏引擎教程,是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame/cpp-game-engine-book 4.1 ...

  9. python 进程理解

    简介 线程理解中介绍过,再回顾一遍,一个应用程序由多个进程组成,一个进程由多个线程组成,由操作系统根据优先级.时间片来绝对线程的运行 进程 python的进程不同于线程,在主流的cpython解释器下 ...

  10. 重写并自定义依赖的原生的Bean方法

    转载请注明出处: 在项目开发过程中,往往是直接应用很多jar包中依赖且声明好的Bean,拿来即用,但很多场景也需要对这些原生的Bean 进行自定义,定制化封装,这样在项目使用的过程中,可以使用自定义的 ...