docker-compose概述--翻译
Overview of Docker Compose 译文
Docker Compose 是一个用来定义和执行多Docker容器程序的工具,如果使用Compose,你将可以使用一个YAML文件来配置你的应用的服务。然后,你可以使用一个单一的命令来读取配置,并创建和启动所有的服务。在学习所有关于Compose的特性之前,你可以看一下 特性列表
Compose 可以在所有的环境中运行,例如: 生产,staging,开发,测试 ,就像CI工作流一样。你可以在一些公共例子中学习到更多用法。
使用Compose一般都是如下三个步骤:
通过Dockerfile定义你的应用的环境,以至于你可以在任何地方复制它
在
docker-compose.yml中定义所有组成你的应用的服务,以至于他们可以在一个隔离的环境中一起运行执行
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概述--翻译的更多相关文章
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- 009.Docker Compose部署及基础使用
一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...
- AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排
一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...
- Docker:Docker Compose 详解
Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...
- docker和docker compose安装使用、入门进阶案例
一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...
- Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...
- Linux系统上安装docker + Compose并创建WordPress
安装docker可参考我的另一篇文章 安装Compose Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. 方法一 1 ...
- Docker学习笔记之编写 Docker Compose 项目
0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...
- Docker学习笔记之常用的 Docker Compose 配置项
0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...
- Docker学习笔记之使用 Docker Compose 管理容器
0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...
随机推荐
- SAP APO-需求计划
需求计划可以对市场中的产品进行预测. 需求计划过程的输出就是需求计划,它考虑了影响需求的所有因素. 需求计划流程定义了需求计划周期中的活动. 由于需求计划过程以循环的形式进行,因此可以重复某些活动. ...
- c++(qt)播放wav文件的四种方式
//方法一(要符合RIFF规范) 1 QSound::play("E:/Projects/报警声1-1.wav"); //方法二(要符合RIFF规范) 1 QSoundEffect ...
- 好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!
前言(废话) 本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章,结果在通过 brew 安装 MongoDB 的时候竟然报错了.原因很简单,公司这台 Mac 上的 homebr ...
- EasyExcel导出添加批注
直接看代码.根据个人需要做改动 注:POI也可以做批注,文章链接https://www.cnblogs.com/qq1445496485/p/15622664.html /** * 导出(批注) * ...
- PTA(BasicLevel)-1014 福尔摩斯的约会
一.问题描述 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明 ...
- Java开发学习(十一)----基于注解开发bean作用范围与生命周期管理
一.注解开发bean作用范围与生命周期管理 前面使用注解已经完成了bean的管理,接下来将通过配置实现的内容都换成对应的注解实现,包含两部分内容:bean作用范围和bean生命周期. 1.1 环境准备 ...
- Mac平台下git命令自动补全
一.安装bash-completion 安装Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...
- springboot和mybatis 配置多数据源
主数据源(由于代码没有办法复制的原因,下面图片和文字不一致) package com.zhianchen.mysqlremark.toword.config;import com.zaxxer.hik ...
- 简单易用的任务队列-beanstalkd
概述 beanstalkd 是一个简单快速的分布式工作队列系统,协议基于 ASCII 编码运行在 TCP 上.其最初设计的目的是通过后台异步执行耗时任务的方式降低高容量 Web 应用的页面延时.其具有 ...
- 翟佳:高可用、强一致、低延迟——BookKeeper的存储实现
分享嘉宾:翟佳 StreamNative 联合创始人 编辑整理:张晓伟 美团点评 出品平台:DataFunTalk 导读:多数读者们了解BookKeeper是通过Pulsar,实际上BookKeepe ...