昨天學到了如何從遠端拉一個 image 下來
以及如何從 image 跑成一個 container
今天就來帶大家搭配 port 轉發的概念
用 docker 跑出一個輕量化的網頁伺服器
一般來說
我們有一些整合性的伺服器稱為 LAMP or XAMPP
今天我們是 ubuntu 所以當然是選 LAMP 囉
不過不會裝 MySQL
目前常見的兩大宗網頁伺服器分別為 Nginx 以及 Apache
上面提到的 LAMP 就用了 apache
而且 docker 中的 php 很好心的幫我們把 apache 一起包裝進去了
有現成的 image 可以使用
那就先把它拉下來吧
docker pull php:apache
這邊看到了新的語法
為什麼 image name 後面有冒號呢
那代表這個 image 的 tag
也可以理解成 "某個版本"
像上面這個就代表 php 這個 image 中有一個 apache 這樣的版本的 image
那要記得一定要加後面的 tag 喔
不然單純的 php 拉下來是不帶 apache server 的
這次的 docker run
不一樣
我們要來介紹幾個新的參數
--name <name>
-d
-v <本地路徑>:<容器路徑>
-p <本地 port>:<容器 port>
那 apache 網頁根目錄預設是在 /var/www/html/
的位置中
我們就把自己家目錄中的 workspace
掛載過去吧
所以會變成 -v /home/demo/workspace:/var/www/html
記得本地路徑要寫絕對路徑喔
再來是 port 轉發的部分
一般來說 http
是 port 80
因此我們就把容器的 80 導向本地端的 80
所以要寫成 -p 80:80
組合起來就變成
docker run --name server -p 80:80 -v /home/demo/workspace:/var/www/html -d php:apache
接下來這裡要調一個很重要的設定
我們現在是把容器的 port 轉發到 Guest 上的 port
所以 Host 端是看不到這個 port 的
因此要再把 Guest 轉發到 Host 上
這邊有點亂 大家可以花些時間理解看看
Container <=> Guest <=> Host
先打開 terminal
用 apt 安裝 net-tools
這個套件
然後輸入 ifconfig
這可以顯示目前網卡的資訊
我們需要的是 enp3s0
這張網卡
接著打開 Vbox 的網路設定
選進階 -> 網路埠轉送
然後依序填入這些
主機 IP
127.0.0.1
0.0.0.0
客體 IP
enp3s0
出來的那個 IP連接埠
80
一路確定退出
接著打開 terminal
切換目錄到 ~/workspace/
還記得我們把這個目錄掛載在容器中的網頁根目錄嗎
我們要在裡面新增一個檔案叫做 index.html
內容就給個 hello world
吧~
最後打開瀏覽器輸入 http://127.0.0.1
出現這樣就代表你成功囉~