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. SAP setting and releasing locks

    REPORT demo_transaction_enqueue MESSAGE-ID sabapdocu. TABLES sflight. DATA text(8) TYPE c. DATA ok_c ...

  2. 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗

    拉取外网 Kubernetes 镜像 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗? 传送门 https://github.com/liamhao/pu ...

  3. CF487E Tourists 题解

    题目链接 思路分析 看到这道题首先想到的此题的树上版本.(不就是树链剖分的板子题么?) 但是此题是图上的两点间的走法,自然要想到是圆方树. 我们先无脑构建出圆方树. 我们先猜测:设后加入的节点权值为 ...

  4. 【跟着大佬学JavaScript】之节流

    前言 js的典型的场景 监听页面的scroll事件 拖拽事件 监听鼠标的 mousemove 事件 ... 这些事件会频繁触发会影响性能,如果使用节流,降低频次,保留了用户体验,又提升了执行速度,节省 ...

  5. Homebrew安装(macos)

    参照大佬的博客文章:https://zhuanlan.zhihu.com/p/111014448 OSX 将下面命令复制到终端执行 /bin/zsh -c "$(curl -fsSL htt ...

  6. 零基础学Java(8)数组

    数组 数组存储相同类型值的序列. 声明数组 数组是一种数据结构,用来存储同一类型值的集合.通过一个整型下标(index,或称索引)可以访问数组中的每一个值.例如,如果a是一个整型数组,a[i]就是数组 ...

  7. IDEA快捷键之html篇-1

      前端IDE中Emmet插件快捷输入HTML代码 前端IDE如VSCode.Atom.Sublime Text和Intellij Idea中使用Emmet插件快捷输入HTML代码的介绍 前端IDE中 ...

  8. 基于串口校时的数字钟设计(verilog实现)

    任务: 电路图设计: 设计: 模块1:1.先设计一个计数时钟,为了仿真方便,这里把1000ns当作1s. 创建一个计数器second_lim,当计数到1000/20时清零,即1s. 秒显示器secon ...

  9. jdbc 10:jdbc事务

    jdbc连接mysql,涉及到的事务问题 package com.examples.jdbc.o10_jdbc事务; import java.sql.Connection; import java.s ...

  10. 树莓派4B串口测试与开发

    参考文档: https://shumeipai.nxez.com/2021/08/09/raspberry-pi-4-activating-additional-uart-ports.html 树莓派 ...