iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
1
Security

資安0~100K只要30天系列 第 7

Day 07 - 神之藍色小鯨魚 (二)

  • 分享至 

  • xImage
  •  

昨天學到了如何從遠端拉一個 image 下來
以及如何從 image 跑成一個 container
今天就來帶大家搭配 port 轉發的概念
用 docker 跑出一個輕量化的網頁伺服器

一般來說
我們有一些整合性的伺服器稱為 LAMP or XAMPP

  • LAMP
    • Linux, Apache, MySQL(MariaDB), PHP
  • XAMPP
    • Cross-Platform, Apache, MySQL(MariaDB), PHP, Perl

今天我們是 ubuntu 所以當然是選 LAMP 囉
不過不會裝 MySQL

Web Server

目前常見的兩大宗網頁伺服器分別為 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

這次的 docker run 不一樣
我們要來介紹幾個新的參數

  • --name <name>
    • 給這個容器一個名字,不然它會亂給奇怪的字串之後會很麻煩,要有取名字的好習慣
  • -d
    • 執行起來後會在背景,才不會占用現在的 terminal
  • -v <本地路徑>:<容器路徑>
    • 把本地某個資料夾掛載進容器中
  • -p <本地 port>:<容器 port>
    • port forwarding

那 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

vm network

接下來這裡要調一個很重要的設定
我們現在是把容器的 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
出現這樣就代表你成功囉~


上一篇
Day 06 - 神之藍色小鯨魚 (一)
下一篇
Day 08 - 搶旗大作戰
系列文
資安0~100K只要30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言