Docker編排工具Fig介紹

jopen 9年前發布 | 18K 次閱讀 Fig Docker

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不支持遠程編排,這意味著你只能在單臺主機上編排一個基礎設施。

原文鏈接:An introduction to Fig(翻譯:吳錦晟 審校:李穎杰)

來自:http://dockerone.com/article/119

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!