構建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
Building Web Server Docker File 1

步驟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
Building Web Server Docker File 2

步驟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
Building Web Server Docker File 3

以上命令的各個部分的作用如下:

  • -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
Building Web Server Docker File 4

啟動容器

要再次啟動容器:

$ docker start my-apache-server
Building Web Server Docker File 5

檢視容器日誌

要檢視Apache伺服器的日誌:

$ docker logs my-apache-server
Building Web Server Docker File 6

刪除容器

當您不再需要容器時,將其刪除:

$ docker rm my-apache-server
Building Web Server Docker File 7

步驟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伺服器,管理您的網站檔案,並根據您的需求進行配置。

廣告