Docker与Fig自动化编排工具使用方法
在Docker使用过程中,编排(Orchestration)是一个关键概念。初学者操作单个容器较为简单,但涉及网络时,将所有进程放入同一个容器并不可靠。随着多容器架构的搭建,手动连接容器和管理数据卷的复杂度不断增加,因此需要更高效的编排工具来应对。 Fig 简介 Fig正是应对这一需求的实用工具。它
在Docker使用过程中,编排(Orchestration)是一个关键概念。初学者操作单个容器较为简单,但涉及网络时,将所有进程放入同一个容器并不可靠。随着多容器架构的搭建,手动连接容器和管理数据卷的复杂度不断增加,因此需要更高效的编排工具来应对。
Fig 简介
Fig正是应对这一需求的实用工具。它由Orchard公司开发,迅速成为自动化Docker容器编排领域的事实标准。目前,Fig团队已被Docker公司收购,并成为官方支持的解决方案。
安装 Fig
安装Fig非常简单,只需一行命令即可完成:
$ sudo pip install -U fig
如果命令执行失败,建议查阅Fig官方文档,通常能快速解决问题。
使用 Fig
使用Fig编排基础设施的核心是编写YAML配置文件。Fig的语法直观,与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 容器:基于 ubermuda/pagekit 镜像,暴露80端口,通过别名 pagekit_db_1 连接到db容器,并挂载data容器的数据卷。
db 容器:展示了在容器中定义环境变量的便捷性——直接使用 environment 配置即可。甚至可以不指定具体值,Fig会从宿主机的同名环境变量中获取。例如:
db:
environment:
MYSQL_ROOT_PASSWORD
data 容器:通过 volumes 参数定义需要共享的目录,实际执行 /bin/true 命令,仅作为数据卷提供者。
配置文件编写完成后,启动整个基础设施只需一条命令:
$ 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,这正是预期效果。data容器由于执行 /bin/true,日志中无输出。
启动完成后,可在另一个终端使用 docker ps 确认所有容器正常运行。如需验证web容器是否可用,通过浏览器访问(先用 docker ps 或 docker port 查看映射端口)。
不过需要说明的是,截至目前,Fig 还不支持远程编排,也就是说,你只能在单台主机上完成整个基础设施的编排。
