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