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 Web Dynpro - 个性化和配置

    根据业务需求,您可以实现许多标准应用程序,并且Web Dynpro应用程序的UI可以根据要求而有所不同. 应用配置 要配置Web Dynpro应用程序,首先要为单个Web Dynpro组件配置数据记录 ...

  2. FTP安装及使用

    通过网络传输数据的手段 1. ssh 2. http 3. nfs 4. rsync 5. ftp 6. samba ftp的简介: 1. ftp是应用层协议,是基于TCP 2. 使用21端口 FTP ...

  3. 论文解读(DCN)《Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering》

    论文信息 论文标题:Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering论文作者:Bo Yang, Xi ...

  4. 到点了开始网抑云(悲)但是用python(整活)

    写在前面的一点网抑云: 爱情不是随便许诺好了不想再说了没错 是我那么多的冷漠 让你感觉到无比的寂寞不过 一个女人的不仅仅渴望得到的一个承诺我害怕欺骗也害怕寂寞更害怕我的心会渐渐地凋落爱情不是随便许诺好 ...

  5. CentOS 7 快速安装docker-compose

    安装docker-composegithub的地址下载太慢了,国内可以使用http://get.daocloud.io/#install-compose网站上面的地址. 首先下载docker-comp ...

  6. 揭开周获 18k star 开源项目的神秘面纱「GitHub 热点速览 v.22.28」

    本周 GitHub Trending 的项目重量十足,比如标题的一周获得 18k+ 的高性能 JS Runtime--bun,用性能来体现了它的"含金量".同样有重量的还有一行代码 ...

  7. logrotate command in Linux

    背景 在生产过程中,由于磁盘空间.保留周期等因素,会对系统.应用等日志提出要求,要求系统日志定期进行轮转.压缩和删除,从而减少开销,而系统自带的logrotate  则是一个简单又实用的小工具,下面着 ...

  8. Trie树模板2

    Trie数模板2 problem 这道题然后我们求最大异或对,我们很容易想出来 \(O(n^2)\) 的做法,两层循环遍历搞定 然后我们知道这样是肯定是肯定过不了的,我们考虑用字典树解决,然后我们来看 ...

  9. gdb调试器在windows下的相关内容

    1.gdb调试器在visual studio或dev c++中也有类似的调试图形化可视界面,但是gdb不同的是它是由命令行组成,他的界面对于习惯图形化可视界面的用户来说一时间会不知所措 2.通过gcc ...

  10. jsx/tsx使用cssModule和typescript-plugin-css-modules

    目录 1,前言 2,效果图 3,如何使用 3.1,安装 3.2,配置 4,示例 5,插件错误处理 5.1,错误触发原因 5.2,解决办法 1,前言 在vite/webpack搭建的项目中,不管是vue ...