共计 2890 个字符,预计需要花费 8 分钟才能阅读完成。
【编者的话】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: changethis
MYSQL_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 ps 或 docker port)。
说明
截至本文写作之时,Fig 不支持远程编排,这意味着你只能在单台主机上编排一个基础设施。
CentOS 6/ 7 系列安装 Docker http://www.linuxidc.com/Linux/2014-07/104768.htm
Docker 的搭建 Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htm
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
原文:http://geoffrey.io/an-introduction-to-fig.html 作者:geoffrey
译文:http://dockerone.com/article/119 译者:吴锦晟