天天看點

【Docker江湖】之建立Web應用服務鏡像——Apache/Nginx

Web應用伺服器的價格是真的貴,而且在一個web伺服器上建立多個web應用也不是很友善,那麼有沒有好辦法來解決這個問題,答案是肯定的,有了Docker那就可以在在一個伺服器上建立多個docker容器了,每個容器啟動一個web服務,這要管理起來也相對友善

在Docker中添加以下内容(thinkgamer/sshd_dockerfile:latest是在上一篇部落格中建立的sshd鏡像)

這裡我們隻做測試,是以sample的站點内容相對簡單 

在apache-ubunt目錄下,建立sample目錄

index.html内容為

在apache-ubuntu目錄下建立執行

vim run.sh

添加以下内容

在apache-ubuntu目錄下執行

sudo docker build -t apache:ubuntu .

最終會輸出類似下面這樣的資訊

檢視我們build的鏡像

sudo docker images

運作鏡像,并使用-p參數映射需要開放的端口(22和80端口)

在主控端用curl抓取網頁來驗證剛才建立的sample站點

curl localhost

       需要說明的是在apache鏡像的dockerfile中隻用EXPOSE定義了對外開放的80端口,而在檢視容器的時候,是映射兩個端口:22和80 

       但是實際上,當嘗試使用SSH登入到容器時,會發現無法登入,這是因為在run.sh中并未啟動ssh服務,這說明在使用Dockerfile建立鏡像時,會繼承父鏡像的開放端口,但卻不會繼承啟動指令,是以,需要在run.sh腳本中添加啟動sshd的服務的指令:

再次建立鏡像

這次建立的鏡像将會同時啟動ssh和Apache服務

可以通過映射本地目錄的方式來指定容器内Apache服務相應的内容,這個時候隻需要在啟動指令中加入 -v參數即可

mkdir nginx-ubuntu  vim Dockerfile

建立run.sh

sudo docker build -t thinkgamer/nginx:a2_u16

啟動并進入容器

執行run.sh

/run.sh

web通路ip

<a href="https://s3.51cto.com/oss/201711/09/0f6744c556481845ddf2f5c9d1b821f0.png" target="_blank"></a>

本文轉自 Mr_sheng 51CTO部落格,原文連結:http://blog.51cto.com/sf1314/1980198

繼續閱讀