天天看點

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

大家好,今天我們來學習如何使用一個docker鏡像互動式地建立一個docker容器。當我們從鏡像中啟動一個docker程序,docker就會擷取該鏡像及其父鏡像,并重複這個過程,直到到達基礎鏡像。然後聯合檔案系統(ufs)會在其頂層添加一個讀寫層。讀寫層被稱之為容器,它包含了一些關于父鏡像資訊及一些其他的資訊,如唯一id,網絡配置和資源限制等。容器是有狀态的,其狀态可以從 運作态 切換到 退出态。一個處于 運作态的容器包含了在cpu上面運作的程序樹,于其它在該主機上運作的程序相隔離,而退出态是指檔案系統的狀态,并保留了其退出值。你可以使用它來啟動,停止和重新開機一個容器。

docker技術為it界帶來了巨大的改變,它使得雲服務可以用來共享應用和工作流程自動化,使得應用可以用元件快速組合,消除了開發、品質保證、産品環境間的摩擦。在這篇文章中,我們将會建立centos環境,然後用apache網絡伺服器提供一個網站服務。

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

這是一個快速且容易的教程,讨論我們怎樣使用互動的shell,以互動的方式來建立一個容器。

<a target="_blank"></a>

<code># docker run -i -t fedora bash</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

downloading fedora base image

現在,在我們的fedora基本鏡像執行個體準備好後,我們将會開始互動式地安裝apache網絡伺服器,而不是為它建立dockerfile。為了做到這點,我們需要在終端或者shell運作以下指令。

<code># yum update</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

installing httpd

<code># yum install httpd</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

退出容器的 tty。

<code># exit</code>

現在,我們要去儲存在fedora執行個體裡做的修改。要做到這個,我們首先需要知道執行個體的容器id。而為了得到id,我們又需要運作以下指令(lctt 譯注:在容器外執行該指令)。

<code># docker ps -a</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

docker running container

然後,我們會儲存這些改變為一個新的鏡像,請運作以下指令。

<code># docker commit c16378f943fe fedora-httpd</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

committing fedora httpd

這裡,修改已經通過使用容器id儲存起來了,鏡像名字叫fedora-httpd。為了确認新的鏡像是否在運作,我們将運作以下指令。

<code># docker images</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

view docker images

我們自己新的fedora apache鏡像正成功的運作,現在我們想添加一些我們網站的網頁内容到apache網絡伺服器,使得網站能夠開箱即用。為做到這點,我們需要建立一個新的dockerfile,它會處理從複制網頁内容到啟用80端口的所有操作。要達到這樣的目的,我們需要使用我們最喜歡的文本編輯器建立dockerfile檔案,像下面示範的一樣。

<code># nano dockerfile</code>

現在,我們需要添加以下的指令行到檔案中。

<code>from fedora-httpd</code>

<code>add mysite.tar /tmp/</code>

<code>run mv /tmp/mysite/* /var/www/html</code>

<code>expose 80</code>

<code>entrypoint [ "/usr/sbin/httpd" ]</code>

<code>cmd [ "-d", "foreground" ]</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

configuring dockerfile

這裡,上述的dockerfile中,放在mysite.tar裡的網頁内容會自動解壓到/tmp/檔案夾裡。然後,整個站點會被移動到apache的網頁根目錄/var/www/html/,指令expose 80會打開80端口,這樣網站就能正常通路了。其次,入口點放在了/usr/sbin/https裡面,保證apache伺服器能夠執行。

現在,我們要用剛剛建立的dockerfile建立我們的容器,以便将我們的網站添加到上面。為做到這,我們需要運作以下指令。

<code># docker build -rm -t mysite .</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

building mysite image

建立好我們的新容器後,我們需要要用下面的指令來運作容器。

<code># docker run -d -p mysite</code>

如何互動式地建立一個Docker容器如何互動式地建立一個Docker容器

running mysite container

最後,我們已經成功的以互動式的方式建立了一個docker容器。在本節方法中,我們是直接通過互動的shell指令建立我們的容器和鏡像。在建立與配置鏡像與容器時,這種方法十分簡單且快速。如果你有任何問題,建議和回報,請在下方的評論框裡寫下來,以便我們可以提升或者更新我們的文章。謝謝!祝生活快樂

原文釋出時間:2015-05-21

本文來自雲栖合作夥伴“linux中國”