Like Share Discussion Bookmark Smile

J.J. Huang   2019-06-01   Docker   瀏覽次數:

Docker - 第十三章 | 安裝Apache Server

要架設網站,一定要有Web伺服器,而Apache是web伺服器(靜態解析,如HTML)。至於動態的網頁這在下一個文章會特別提到。如果有興趣可以先看看這篇文章Apache和Tomcat的區別

搜尋 Image

Searh指令進化一下,只搜尋10顆星以上的。

1
docker search -f=stars=10 apache

拉取 Image

1
docker pull httpd

查看 Image

1
docker images

執行 Image

使用volume

由於docker卷是持久性的,因此可以專門為此目的建立volume。

1
2
docker volume create --name httpd-htdocs
docker run -d -p 80:80 --name myhttpd --restart always -v httpd-htdocs:/usr/local/apache2/htdocs/ httpd
  • -d :後台執行 Container ,並返回ID
  • -p 80:80 :將 Container 的 80 Port 映射到主機的 80 Port (前面代表主機,後面代表容器)
  • -name myhttpd :將 Container 取名為 myhttpd
  • -restart always :如果 container 遇到例外的情況被 stop 掉,例如是重新開機,docker 會試著重新啟動此 container
  • -v httpd-htdocs:/usr/local/apache2/htdocs/ :使用剛建立的volume,httpd-htdocs 掛載到 Container 的 /usr/local/apache2/htdocs/。
  • httpd :指定安裝的鏡像httpd

掛載主機目錄

這不可移植,因為它依賴於主機上具有正確權限的目錄。但是,在需要將此卷分配給某些特定底層存儲的某些情況下,它可能很有用。

先建立一個httpd.conf檔於$PWD/conf/下,在掛載的時候才不會因為檔案不存在造成啟動失敗。

1
2
cd /Users/morose/Documents/Temp/Docker/Httpd
docker run -d -p 80:80 --name myhttpd --restart always -v $PWD/htdocs/:/usr/local/apache2/htdocs/ httpd
  • -d :後台執行 Container ,並返回ID
  • -p 80:80 :將 Container 的 80 Port 映射到主機的 80 Port (前面代表主機,後面代表容器)
  • -name myhttpd :將 Container 取名為 myhttpd
  • -restart always :如果 container 遇到例外的情況被 stop 掉,例如是重新開機,docker 會試著重新啟動此 container
  • -v $PWD/htdocs:/usr/local/apache2/htdocs/ :將主機當前目錄下的 htdocs 掛載到 Container 的 /usr/local/apache2/htdocs/。
  • httpd :指定安裝的鏡像httpd

進入 Container

1
docker exec -it myhttpd bash
  • -i :即使沒有附加也保持STDIN 打開
  • -t :分配一個偽終端

測試

  • 建立一個index.html
  • 將下方程式碼複製進去index.html並儲存
  • 將index.html複製到$PWD/htdocs/下
  • 開啟瀏覽器 瀏覽 http://localhost
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="utf-8">
<title>HTML 調試示例</title>
</head>
<body>
Hi, I'm J.J.
</body>
</html>

恭喜你已經搭建了Apache Server,這邊只是簡單的使用Docker快速建置,當然有更多詳細參數設定或是指令等等,這邊就不特別列出,畢竟我也不熟,哈。


註:以上參考了
dockerhubhttpd 文章。
apache
Docker 安装 Apache
Apache和Tomcat的區別