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 ps
或docker port
)。说明
截至本文写作之时,Fig不支持远程编排,这意味着你只能在单台主机上编排一个基础设施。
原文链接:An introduction to Fig(翻译:吴锦晟 审校:李颖杰)
===============================================
译者介绍
吴锦晟,大连理工大学硕士研究生,就职于上海金桥信息股份有限公司技术中心。目前负责云计算、虚拟化、大数据及其信息可视化等方向的研究和应用。希望通过翻译技术文章于Dockone社区为Docker的步道做出微薄贡献。
相关文章:

java调用ffmpeg,mencoder进行视频转换,读取时长等
2019独角兽企业重金招聘Python工程师标准>>> 以前做的一个基于ffmpeg的视频格式转换的程序,现在抽空整理一下,很多地方都是从别的大神那借鉴的,只是把自己的觉得有用的,对别人有帮助的拿出来分享分享,下面是…

数字人民币实现可控匿名交易?产业升级离不开安全可信的“数字底座”
自央行进行数字人民币试点测试工作以来,人们讨论最多的可能是它的便捷性、匿名性。不过,它的意义远不止于人类个体层面。 作为一种面向未来的货币形式,在未来数字经济时代,央行数字人民币的普及无疑将加速全球资产数字化和身份数…

apache+tomcat 搭建负载均衡系统
apachetomcatmod_jk 搭建负载均衡系统。0.os系统采用centos6.8 x64 2.6.32-642.el6.x86_641.首先安装好jdk环境本次采用jdk-8u111-linux-x64.gz jdk和jre的安装目录要不同,否则的话lib目录下没有dt.jar 和tools.jar 要配置好环境变量如下 vi /etc/profile #ad…

从普本到北大:我的跨校跨专业考研经验
首先做一个我考研情况的简介。 经历了2013年考研的混战,据说是史上考研人数顶峰的年份,因为2014改革,不再有自费生之后,人民群众对于所谓学术硕士的需求量激减,继 而投奔价格费用相当,读书年份较少的专业硕…

C#中使用DirectX编程
我感觉声音的播放比较简单。我们从播放声音开始。为什么我这么觉得?我也不知道。这里是展示最最最最最简单的DirectX播放声音的例子,我尽量省略了无关的代码。最后的代码只有19行,够简单了吧? 准备工作:1.安装了Direc…

40+场面试,100%通过率,我想分享的14条经验
来源 | 陈同学在搬砖头图 | 下载于视觉中国大家好,我是陈同学,首先来一个简单的自我介绍和个人的经历分享。我的本科和硕士均就读于哈工大,在研究生期1年时间内自学操作系统、计算机网络、C、数据结构等,累计学习30本书、500博客文…

云端卫士架构师讲DDoS攻击的智能防御之道
DDoS即分布式拒绝服务攻击,这是一场关乎资源的较量,攻击者通过自己控制的大量僵尸主机,向目标设施(服务器、运营商网络和基础架构等)发起洪水猛兽般的流量型攻击,或是连绵不绝的应用型攻击。 如果将受害者比…

C#中方法参数的四种类型
C#中方法的参数有四种类型:-值参数:不含任何修饰符。方法中的形参是实参的一份拷贝,形参的改变不会影响到内存中实参的的值,实参是安全的。-引用参数:以ref修饰符声明。传递的参数实…

赠书 | 算力时代,用 Python 来快速解决复杂问题
Python作为一种编程语言,拥有简洁、高效的表达能力。与此同时,Python语言环境中还配备各种软件库,即模块。结合实际问题,选择适当的模块,便可生成简单、快速、正确的程序。书中列举了一些数值计算的简单例题࿰…

用for实现Go的while和do...while
Go的while和do...while实现 Go语言没有while和do...while语法,我们可以通过for实现:即break在业务代码执行前相当与while,break在业务代码执行后相当do...while while for {if condition {break}xxxxxxxx } do...while for {xxxxxxxxif cond…

DTCC:数据库安全重点在数据拷贝过程中
本文讲的是DTCC:数据库安全重点在数据拷贝过程中,2017年5月11日-13日,2017中国数据库技术大会于北京国际会议中心盛大开幕。作为国内最受关注的数据库技术大会,本届大会以“数据驱动价值发现”为主题,汇集多个领域的百…

Log4J配置方式Java工程测试
2019独角兽企业重金招聘Python工程师标准>>> Log4J配置方式 1、 导入jar包 Commons-logging .jarLog4j-1.2.17.jar2、 编写log4j.properties 文件 ############## ############################## 优先级 INFO ,输出到console_log 和filelog 两个位置 log4j.root…

C#“装箱”(boxing)与“拆箱”(unboxing)
装箱和拆箱:任何值类型、引用类型可以和object(对象)类型之间进行转换。装箱转换是指将一个值类型隐式或显式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)…

无人机、IoT 设备都有漏洞?专访以色列老牌安全企业Check Point | 拟合
从无序中寻找踪迹,从眼前事探索未来。2021 年正值黄金十年新开端,CSDN 以中立技术社区专业、客观的角度,深度探讨中国前沿 IT 技术演进,推出年度重磅企划栏目——「拟合」,通过对话企业技术高管大咖,跟踪报…

sql server 在占用服务器内存居高不下怎么办【转】
在管理一个测试服务器的时候,内存使用率居高不下,在资源管理器中查看到 sql server 2008 占用了80%的系统资源,于是找到了一下资料,并解决了Sql Server 2008 占用内存过大的问题。 转自百度经验http://jingyan.baidu.com/article…

C# checked、unchecked操作符
checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查(操作数均为整数):1) 预定义的++和――一元运算符。2) 预定义的-一…

TPAMI 2021 | 深度赋智AutoDL系列竞赛世界冠军方案首次公开
导读:「深度赋智」斩获NeurIPS-AutoDL 2019系列竞赛总决赛世界冠军,在图像/音频/视频/文本/表格不同场景的十个数据集上稳定获得八项第一和均分第一。为共同推动AutoDL技术的快速发展,冠军方案的技术细节首次公开,最新相关论文已被…

转: 如何实现jQuery的Ajax文件上传
【PHP文件上传】 在开始之前,我觉得是有必要把通WEB上传文件的原理简单说一下的。实际上,在这里不管是PHP,JSP,还是ASP处理上传的文件,其实都是WEB早已把文件上传到服务器了,我们只是运用上传处理函数来处理…

Mybatis遍历查询 ——foreach
第一步: 在xxxMapper接口中添加一个函数,返回一个list,这里的参数是一个integer类型的集合 public List<Emp> findEmpByList(Param("list") List<Integer> list); 第二步: 在xxxMapper.xml 中添加statement…

C#中如何获取注册表信息
实现方式:利用Microsoft.win32类提供的注册表类访问系统注册表获取ODBC数据服务列表。 具体实现: Microsoft.win32提供了RegistryKey类,用来访问系统的注册表。 ///定义注册表子Path string strRegPath "SOFTWARE/ODBC/ODBC.INI…

用 Python 实现隐身,我可以 | 文末福利
作者 | 李秋键头图 | 下载于视觉中国出品 | AI 科技大本营(ID:rgznai100)引言:视频和图像的隐身术是指在视频或者图像中中,在没有任何输入遮罩的情况下,通过框选目标体,使得程序实现自动去除视频中的文本叠…

改变myeclipse北京颜色
经常用 MyEclipse 写代码,时间久了会觉得白色的背景颜色很刺眼,于是乎便想要换一种柔和些的颜色来缓解视力疲劳,那么怎么样来修改 MyEclipse 代码编辑区域的背景颜色呢? 依次展开菜单 Window >> Preferences >> Gener…

redis 代理工具Predixy安装部署
PredixyPredixy 是一款高性能全特征redis代理,支持redis-sentinel和redis-cluster特性高性能并轻量级支持多线程多平台支持:Linux、OSX、BSD、Windows(Cygwin)支持Redis Sentinel,可配置一组或者多组redis支持Redis Cluster支持redis阻塞型命…

超级详细的 Python 数据分析指南
来源 | 算法进阶头图 | 下载于视觉中国前言:数据分析是通过明确分析目的,梳理并确定分析逻辑,针对性的收集、整理数据,并采用统计、挖掘技术分析,提取有用信息和展示结论的过程,是数据科学领域的核心技能。…

C#实现-移位加密
/* Filename: encrypt_string.cs Author : zhanghua Date : 2005-08-11 Fuction : input a strig and encrypt a string 加密后的字符串的第一个字符是原先字符串的最后一个字符, 其余的每一个字符是对应的原字符串中的前一个字符的值…

oracle相关操作
查看用户系统权限:select * from dba_sys_privs;select * from session_privs;select * from user_sys_privs;查看用户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;修改数据库密码:alte…

Ansible批量安装mysql数据
1.构建安装目录mkdir -p /ansible/roles/mysql/{defaults,files,handlers,meta,tasks,templates,vars}defaults 默认寻找路径tasks 存放playbooks路径files 存放文件和脚本,copy模块文件搜索路径templates 模版存放路径handlers notify调用部分playbook存放路径vars…

C#在客户端和服务端操作Excel文件
一、在客户端把数据导入到Excel文件步骤1、创建Excel application对象,打开或生成Excel文件//服务端创建StringBuilder对象System.Text.StringBuilder sbnew System .Text .StringBuilder (); //指定客户端执行语言sb.Append ("<Script LanguageVBScript&g…

oracle数据库同步交换的方法
oracle数据同步方案与实现:如何在两个oracle服务器之间交换数据?来源:无忧模板 作者:网络编辑 更新时间:2010-08-09 18:10 点击:次 方案一:建立两个数据库之间的DATA_LINK,直接将新数据写入另一数据库方案二:使用SQL *…

让语音助手听懂方言,这个数据集能搞定
来源 | HyperAI超神经头图 | 来源于网络 侵删方言是语音识别技术发展中必须要迈过去的坎儿,那么如何让模型能够听懂和理解方言呢?使用优质的数据集是一种的方法,本文将介绍一个经典的方言录音数据集 TIMIT。随着科技的成熟,语音识…