本文讲的是Docker编排工具Fig介绍,【编者的话】Fig是一个基于Docker的用于快速搭建开发环境的工具,目前Fig团队已经加入Docker公司。Fig通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。Fig可以和Docker一起来构建基于Docker的复杂应用。本文详细介绍了Fig的安装以及使用。

什么是编排?

编排(译者注:Orchestration,翻译为编排)是指同时管理多个容器的行为。当你刚开始玩Docker的时候,你只需要操作一个容器。紧接着你学习了网络并得知把所有进程都放入同一个容器中并不合适,然后不知不觉你就发现自己已经建立了多容器的基础架构。你第一次尝试可能不会感到复杂,但是当使用两个或者三个容器的时候,你就会觉得很麻烦。手动连接容器、管理卷,很快你就乱了,应该有更好更实用的工具来做这件事。

Fig简介

这个更实用的工具称为Fig。Fig是Orchard的一个产品并很快成为自动化Docker容器编排一个事实标准,目前Fig已经被Docker公司收购并成为官方支持的解决方案。

安装Fig

Fig是一个Python Package,你可以使用以下命令来安装:

$ sudo pip install -U fig

就这么简单。如果不能工作,可以从Fig的官方文档中了解更多信息。

使用Fig

使用Fig来编排一个基础设施,你首先需要在YAML配置文件中描述它。描述语法很简单,和Docker有点类似。
下面是Pagekit CMS的Fig配置示例:

web:
image: ubermuda/pagekit
ports:- 80
links:- db:pagekit_db_1
volumes_from:- data
db:
image: orchardup/mysql
environment:MYSQL_ROOT_PASSWORD: changethisMYSQL_DATABASE: pagekit
data:
image: busybox
command: /bin/true
volumes:- /pagekit/storage- /pagekit/app/cache

这个配置文件定义了三个不同的容器。

web容器是面向web方面的容器,它基于ubermuda/pagekit镜像构建,你可以从GitHub上获取ubermuda/pagekit的源码,web容器会暴露80端口(通过ports参数),使用别名pagekit_db_1(links)连接到db容器,并且data容器的卷(volumes)也会被挂载到web容器。

从db容器中我们能看到在容器中定义环境变量是多么简单:只要使用environment配置即可。在示例中,我们在配置文件中定义了所有的值,但你也可以省略这些值,这样容器会从它的宿主机中获取。

db:
environment:MYSQL_ROOT_PASSWORD

所述的MYSQL_ROOT_PASSWORD环境变量被来自主机的同名环境变量填充。

最后,data容器通过volumes参数定义了即将使用的所有目录作为共享卷目录。

配置文件写完后,你只需要一个fig up命令即可启动你的基础设施。

$ fig up
Creating dockerpagekit_db_1...
...
Creating dockerpagekit_data_1...
Creating dockerpagekit_web_1...
...
Attaching to dockerpagekit_db_1, dockerpagekit_web_1
...
db_1  | 141110  4:14:02 [Note] /usr/sbin/mysqld: ready for connections.
db_1  | Version: '5.5.38-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
...
web_1 | 2014-11-10 04:15:20,750 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
web_1 | 2014-11-10 04:15:20,750 INFO success: php5-fpm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

完整的启动日志有点太长了,所以我只截取了一部分。正如你所看到的,Fig创建了三个容器,dockerpagekit_db_1可以连接到dockerpagekit_web_1,正是我们想要的。

你可能还注意到有一个数据容器没有日志线,那是因为 /bin/true 命令无法正常输出。

现在你可以在另一个终端中运行docker ps命令来检查一切是否运行正常,同时,可是使用浏览器来确认web容器是否正常启动。(你首先需要确认映射端口,可以使用docker psdocker port)。

说明
截至本文写作之时,Fig不支持远程编排,这意味着你只能在单台主机上编排一个基础设施。

原文链接:An introduction to Fig(翻译:吴锦晟 审校:李颖杰)

===============================================
译者介绍
吴锦晟,大连理工大学硕士研究生,就职于上海金桥信息股份有限公司技术中心。目前负责云计算、虚拟化、大数据及其信息可视化等方向的研究和应用。希望通过翻译技术文章于Dockone社区为Docker的步道做出微薄贡献。

原文发布时间为:2015-01-04
本文作者:吴锦晟
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:Docker编排工具Fig介绍

Docker编排工具Fig介绍相关推荐

  1. 简单的Docker编排工具TOSCA

    时下Docker编排工具一瞥 从<Docker orchestration>这篇有趣的文章中,我们要思考为什么需要编排工具?基本的前提是,编排工具扮演了创建基于应用的容器及其层依赖的时间编 ...

  2. Docker编排工具Humpback初试

    之前使用容器管理工具K8S时一直觉得其太复杂,最近了解到一款简单好用的容器管理工具Humpback,下面简单的进行介绍和初步使用示例. 什么是 Humpback? Humpback 是一款轻量级的Do ...

  3. Docker集群管理(DockerHub Harbor 打包-Jib 任务编排工具- docker-compose和Swarm)

    Docker 集群管理 Docker 集群管理 镜像仓库管理 DockerHUb仓库管理 什么是DockerHUb 账号注册和登陆 Docker客户端登录 管理镜像 推送镜像 仓库镜像测试 regis ...

  4. Docker 系列学习(二) 全面介绍docker

    Docker简介 Docker是一种遵从Apache2.0协议开源的Linux容器管理解决方案,它通过进程和进程通信技术对操作系统的文件资源和网络的进行隔离,实现了包含文件资源.系统资源(shell环 ...

  5. 云计算:OpenStack、Docker、K8S(Kubernetes容器编排工具)的演进史 | 附推荐阅读

    目录 引子 OpenStack 的诞生 OpenStack 是什么 Docker 的出现 K8S(Kubernetes) - 为 Docker 而生 推荐阅读 引子 作为一名程序员,设计程序架构.优化 ...

  6. open source软件:Nomad介绍(任务编排工具)

    1. 介绍 Nomad 是一个灵活的任务编排工具,使用户能部署和管理任何容器化的和传统的应用 Nomad能infrastructure-as-code的部署应用,将bin放入job, 可以优化资源利用 ...

  7. 容器单机编排工具 Docker Compose,swap 限制,配置默认的CFS调度程序,Stress-ng 压力测试工具,docker官网镜像上传,及阿里云镜像上传,Docker 的资源限制

    目录 Docker Compose介绍   有版本问题 一键生成 docker-compose.yml docker官网镜像上传,及阿里云镜像上传 Docker 之分布式仓库 Harbor Docke ...

  8. 介绍两款Docker可视化工具

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术群 来源:8rr.co/n2uh Docker是一项非常流行的容器技 ...

  9. 安装容器编排工具 Docker Compose

    安装容器编排工具 Docker Compose  curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/doc ...

最新文章

  1. Fastlane实战(一):移动开发自动化之道
  2. XP中预防U盘自动运行病毒的方法!
  3. 一篇深入剖析PCA的好文
  4. java mapreduce 实例_MapReduce -- JAVA 实例(一)计算总数
  5. 【拓扑排序】【DP】奖金(ssl 1325)
  6. 阿里云李飞飞:什么是云原生数据库
  7. 吃豆人 博弈_强化吃豆人
  8. mybatis 映射问题(mysql date与java Date类型格式错误)
  9. 如何优雅地送妹子礼物?
  10. BSH验厂介绍BSH博世社会责任审核内容
  11. 企业微信没有50名员工可以扩容吗?客户数达到上限会怎样?
  12. 戏人看戏,苏旭博客网-学无止尽
  13. 基础算法题:723. PUM
  14. 西南交大大学生营养早餐优化食谱
  15. Laravel第三方登录开发之实现QQ登录
  16. IPFS云服务器预售登录系统,ipfs 云服务器
  17. 【HTML】DAY 2
  18. 利用python制作制作直播视频录制、下载、播放
  19. 有什么会议录音转文字软件?用这3个录音转文字软件
  20. [异常][驱动] 蓝牙 驱动

热门文章

  1. bzoj1688[Usaco2005 Open]Disease Manangement 疾病管理*
  2. Linux加入到Windows域 收藏
  3. D3D中简单的截图方法 (转)
  4. JSTL+EL表达式方法获取Oracle的Clob字段内容
  5. CYQ学习主要摘要4
  6. 026——VUE中事件修饰符之使用$event与$prevent修饰符操作表单
  7. jquery插件-表单验证插件-提示信息中文化与定制提示信息
  8. github/python/ show me the code 25题(一)
  9. 如何终止正在在发送的ajax请求
  10. IT人士的人际关系压力