
- Docker教程
- Docker - 首頁
- Docker - 概述
- Docker - 在Linux上安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 倉庫
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器與主機
- Docker - 配置
- Docker - 容器與Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全
- Docker - 工具箱
- Docker - 雲
- Docker - 雲構建
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes架構
- Docker - Kubernetes的工作原理
- Docker - 生成式AI
- Docker - 託管
- Docker - 最佳實踐
- Docker設定服務
- Docker - 設定Node.js
- Docker - 設定MongoDB
- Docker - 設定NGINX
- Docker - 設定ASP.Net
- Docker - 設定MySQL
- Docker - 設定Go
- Docker - 設定Rust
- Docker - 設定Apache
- Docker - 設定MariaDB
- Docker - 設定Jupyter
- Docker - 設定Portainer
- Docker - 設定Rstudio
- Docker - 設定Plex
- Docker設定 - Flame
- Docker設定 - PostgreSQL
- Docker設定 - Mosquitto
- Docker設定 - Grafana
- Docker設定 - Nextcloud
- Docker設定 - Pawns
- Docker設定 - Ubuntu
- Docker設定 - RabbitMQ
- Docker - 設定Python
- Docker - 設定Java
- Docker - 設定Redis
- Docker - 設定Alpine
- Docker - 設定BusyBox
- Docker設定 - Traefik
- Docker設定 - WordPress
- Docker有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
構建Web伺服器Docker映象檔案
Docker Web伺服器只是打包在Docker容器中的Web伺服器。在容器化過程中,大多數Docker容器捆綁了作業系統、執行時環境、像Nginx或Apache這樣的Web伺服器軟體以及您的應用程式程式碼來執行您的Web伺服器。這為您的Web伺服器提供了一個統一的可移植環境,無論底層基礎設施如何,都可以以相同的方式移植和執行。
在本章中,讓我們更深入地瞭解在Docker容器上執行的Web伺服器。
什麼是Web伺服器?
Web伺服器是軟體和硬體的組合,旨在響應終端使用者的請求提供Web內容。因此,它執行特定的程式來處理來自客戶端(即瀏覽器)的傳入請求,透過響應請求來提供所需的網頁或其他資源,例如影像、影片或檔案。硬體元件包括一臺物理計算機或一臺虛擬機器,其上儲存著軟體、靜態檔案和相關的資料庫。
當用戶在瀏覽器中鍵入網站地址時,請求會發送到與該域名關聯的Web伺服器。Web伺服器處理請求,查詢請求的網頁或資源,並將其返回,以便在此上下文中在請求使用者的瀏覽器中顯示響應。Web伺服器支援各種協議;傳送Web內容最常見的協議是HTTP - 超文字傳輸協議。如今,大多數Web伺服器還實現了其他功能,例如安全、快取和伺服器端指令碼,以生成動態Web內容。
流行的Docker Web伺服器
Docker簡化了Web伺服器的部署並簡化了其管理,透過擴充套件、隔離等等。以下是開發人員在開發和生產環境中使用的5個最流行的Docker Web伺服器。
Nginx
Nginx是一個輕量級、高效能的Web伺服器,用於建立負載很高的專案。它以其穩定性、豐富的功能和低資源消耗而聞名。
Nginx的關鍵特性
- 反向代理和負載均衡 - 反向代理和負載均衡允許傳入流量有效地分佈在伺服器之間。
- 高效能 - 它能夠處理大量的併發連線,並且資源消耗極少。
- 安全 - 它具有安全補丁,定期更新,並提供速率限制和IP阻止。
- 易於配置 - 易於配置的語法,使您可以輕鬆設定和維護。
- 可擴充套件性 - 非常適合垂直和水平擴充套件Web應用程式。
Apache HTTP伺服器
由於其靈活性和豐富的模組,Apache HTTP伺服器仍然是最著名的Web伺服器之一。
Apache HTTP伺服器的關鍵特性
- 模組化 - 豐富的模組,用於許多功能、安全、URL重寫和身份驗證。
- 跨平臺 - 執行在各種作業系統上,使其成為不同環境的多功能選擇。
- 社群支援 - 來自社群的優秀支援,以及詳細的文件。
- 可定製性 - 它可以透過.htaccess檔案和配置指令進行高度定製,以滿足任何特定需求。
- 穩定性 - 在提供Web內容方面擁有極佳的穩定性和可靠性記錄。
Caddy
Caddy是新一代的Web伺服器,用於自動HTTPS和易用性。
Caddy的關鍵特性
- 自動HTTPS - 獲取和自動續訂TLS證書,簡化網站保護。
- 易於配置 - 簡化的配置檔案格式,降低了設定複雜性。
- HTTP/2支援 - 原生支援HTTP/2,以提高效能和使用者體驗。
- 跨平臺 - 幾乎可以在任何現有的作業系統上執行,例如Linux、macOS和Windows。
- 整合反向代理 - 它具有反向代理機制,使系統適合微服務架構。
Lighttpd
Lighttpd是一個輕量級的Web伺服器,但也針對速度關鍵型環境進行了最佳化。
Lighttpd的關鍵特性
- 效能 - 旨在快速且消耗低資源,非常適合高效能應用程式。
- 佔用空間小 - 對記憶體和CPU的使用量較小,可以部署在資源受限的裝置上。
- 安全 - 支援所有現代安全功能,包括TLS,幷包含一組工具,可以防止常見的Web攻擊。
- 易於使用 - 其應用程式配置和設定過程很簡單。
- 靈活 - 它可以用於從靜態站點到複雜動態內容的各種Web應用程式。
Tomcat
Apache Tomcat是Java Servlet、JavaServer Pages和Expression Language技術的開源實現。
Apache Tomcat的關鍵特性
- Java支援 - 專為服務Java Web應用程式而設計,使其成為Java開發人員的流行選擇。
- 可擴充套件性 - 它可以高度擴充套件到大多數框架和庫。
- 效能 - 最適合高效執行Java應用程式。
- 整合 - 它可以輕鬆與其他Apache專案(如Apache HTTP伺服器)整合。
- 健壯性 - 經良好測試,穩定,擁有龐大的使用者群和活躍的社群支援。
我們討論的Web伺服器在Docker生態系統中很受歡迎,因為它們具有效能、靈活性和全面的功能集。它們可以滿足不同的需求和要求,這使得為特定需求找到合適的解決方案的任務更加容易。
如何在Docker中執行Apache HTTP伺服器?
您可以在Docker中輕鬆執行Apache HTTP伺服器。這需要從Docker Hub拉取Apache映象,建立一個容器並配置伺服器。這是一個逐步指南,幫助您入門。
步驟1:安裝Docker
您可以從Docker官方網站下載並安裝Docker。
步驟2:拉取Apache HTTP伺服器映象
啟動終端並執行以下命令,從Docker Hub拉取官方Apache HTTP伺服器Docker映象。
$ docker pull httpd

步驟3:為您的網站建立一個目錄
要儲存網站檔案,請在本地計算機上建立一個目錄。例如:
$ mkdir ~/my-apache-website $ cd ~/my-apache-website
步驟4:建立一個簡單的HTML檔案
您需要一個HTML檔案來提供服務。您可以透過在您的網站目錄中建立一個index.html檔案來測試伺服器。
echo "<!DOCTYPE html><html><body><h1>Hello from Apache!</h1></body></html>" > index.html

步驟5:執行Apache容器
您可以從Apache HTTP伺服器映象執行Docker容器。您還必須將您的網站目錄掛載到容器。
$ docker run -dit --name my-apache-server -p 8080:80 -v ~/my-apache-website:/usr/local/apache2/htdocs/ httpd:latest

以上命令的各個部分的作用如下:
- -dit - 這些標誌用於在分離模式(後臺)和互動式終端中執行容器。
- --name my-apache-server - 您可以使用此選項將容器命名為my-apache-server。
- -p 8080:80 - 如果您想從本地瀏覽器訪問伺服器,您可以將本地機器上的8080埠對映到容器中的80埠。
- -v ~/my-apache-website:/usr/local/apache2/htdocs/ - 為了將本地網站目錄掛載到容器的Apache文件根目錄,您可以使用-v卷標誌。
- httpd:latest - 這指定了用於建立容器的映象(Apache HTTP伺服器,最新版本)。
步驟6:驗證Apache伺服器是否正在執行
容器啟動並執行後,您可以開啟Web瀏覽器並導航到https://:8080。您應該能夠看到index.html檔案的內容,在本例中為-“Hello from Apache!”。
步驟7:管理Apache容器
如果您想管理正在執行的容器,您可以使用以下Docker命令。
停止容器
要停止容器:
$ docker stop my-apache-server

啟動容器
要再次啟動容器:
$ docker start my-apache-server

檢視容器日誌
要檢視Apache伺服器的日誌:
$ docker logs my-apache-server

刪除容器
當您不再需要容器時,將其刪除:
$ docker rm my-apache-server

步驟8:自定義Apache配置(可選)
如果您想自定義Apache配置,您可以建立一個自定義配置檔案並將其掛載到容器。例如,建立一個自定義httpd.conf檔案:
$ mkdir ~/my-apache-config $ cp /path/to/original/httpd.conf ~/my-apache-config/httpd.conf
然後使用自定義配置執行容器:
$ docker run -dit --name my-apache-server -p 8080:80 -v ~/my-apache-website:/usr/local/apache2/htdocs/ -v ~/my-apache-config/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd:latest
哪個Web伺服器與Docker容器最相容?
很難確定哪個Web伺服器最適合與Docker容器相容,因為每個伺服器都有其特定的要求和需求,以完成與專案相關的特定任務。廣泛使用的Nginx和Apache也與Docker良好相容,並以其豐富的功能而聞名。需要高效能和低資源使用率的應用程式可以使用Nginx,它也非常適合靜態內容和負載均衡。相比之下,Apache功能豐富且靈活,適用於需要使用擴充套件模組支援的動態Web內容的更高階應用程式。其他選項,如Caddy和Traefik,也因其易用性和非常現代化的功能而越來越受歡迎。
結論
本章討論瞭如何在Docker容器中建立和執行Web伺服器。我們瞭解了在容器中使用Web伺服器所需的各種Docker命令。您可以按照本指南中提到的步驟快速設定Apache伺服器,管理您的網站檔案,並根據您的需求進行配置。