使用Docker编排工具Fig,快速搭建开发环境
创始人
2025-01-09 04:30:34
0

[[125639]]

什么是编排?

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

Fig简介

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

安装Fig

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

  1. $ sudo pip install -U fig 

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

使用Fig

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

下面是Pagekit CMS的Fig配置示例:

  1. web: 
  2. image: ubermuda/pagekit 
  3. ports: 
  4. - 80 
  5. links: 
  6. - db:pagekit_db_1 
  7. volumes_from: 
  8. - data 
  9. db: 
  10. image: orchardup/mysql 
  11. environment: 
  12. MYSQL_ROOT_PASSWORD: changethis 
  13. MYSQL_DATABASE: pagekit 
  14. data: 
  15. image: busybox 
  16. command: /bin/true 
  17. volumes: 
  18. - /pagekit/storage 
  19. - /pagekit/app/cache 

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

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

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

  1. db: 
  2. environment: 
  3. MYSQL_ROOT_PASSWORD 

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

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

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

  1. $ fig up 
  2. Creating dockerpagekit_db_1... 
  3. ... 
  4. Creating dockerpagekit_data_1... 
  5. Creating dockerpagekit_web_1... 
  6. ... 
  7. Attaching to dockerpagekit_db_1, dockerpagekit_web_1 
  8. ... 
  9. db_1 | 141110 4:14:02 [Note] /usr/sbin/mysqld: ready for connections. 
  10. db_1 | Version: '5.5.38-0ubuntu0.12.04.1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu) 
  11. ... 
  12. web_1 | 2014-11-10 04:15:20,750 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 
  13. 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不支持远程编排,这意味着你只能在单台主机上编排一个基础设施。

本文出自:http://dockerone.com/article/119

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...