在Docker中構(gòu)建并運(yùn)行Nginx容器的完整教程
前言
在現(xiàn)代應(yīng)用程序開發(fā)中,容器化技術(shù)已成為一種流行的解決方案。Docker 作為一種強(qiáng)大的容器化平臺(tái),使得開發(fā)、測(cè)試和部署變得更加高效和靈活。Nginx 是一款廣泛使用的高性能 Web 服務(wù)器和反向代理服務(wù)器,適用于各種場(chǎng)景,如靜態(tài)文件服務(wù)、負(fù)載均衡和 API 網(wǎng)關(guān)等。在本教程中,我們將詳細(xì)介紹如何在 Docker 中構(gòu)建并運(yùn)行一個(gè) Nginx 容器,幫助開發(fā)者快速搭建和管理 Nginx 服務(wù)。
1.下載基礎(chǔ)鏡像
下載一個(gè)Nginx鏡像的鏡像基礎(chǔ)centos鏡像
docker pull centos
2.建立工作目錄
mkdir nginx cd nginx
3.編寫Dockerfile文件
可以根據(jù)nginx安裝到編譯的過程來寫Dockerfile文件
在nginx目錄下執(zhí)行
vim Dockerfile FROM centos:7 RUN rm -rf /etc/yum.repos.d/* RUN curl -o /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo RUN yum install -y wget proc-devel net-tools gcc gcc-c++ zlib zlib-devel make openssl-devel RUN wget http://nginx.org/download/nginx-1.24.0.tar.gz RUN tar zvxf nginx-1.24.0.tar.gz RUN cd nginx-1.24.0 && ./configure --prefix=/usr/local/nginx && make && make install EXPOSE 80 EXPOSE 443 CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
4.便攜執(zhí)行腳本內(nèi)容
vim run.sh #!/bin/bash /usr/local/nginx/sbin/nginx
5.生成鏡像
docker build -t nginx:mynginx .
1.docker build:這是 Docker 的命令,用于根據(jù)指定的 Dockerfile 構(gòu)建一個(gè)新的鏡像。
2.-t nginx:mynginx:這是為生成的鏡像指定一個(gè)名稱和標(biāo)簽。
3.nginx 是鏡像的名稱。4.mynginx 是鏡像的標(biāo)簽。使用這種方式可以方便管理不同版本的鏡像。
- .:**表示當(dāng)前目錄是構(gòu)建上下文,這個(gè)目錄下必須包含 Dockerfile 文件。Docker 會(huì)根據(jù)這個(gè) Dockerfile 中的指令來構(gòu)建鏡像。
構(gòu)建過程
在你提供的輸出中,可以看到構(gòu)建過程的各個(gè)階段:
加載構(gòu)建定義:Docker 讀取 Dockerfile 的內(nèi)容。
加載基礎(chǔ)鏡像:從 Docker Hub 獲取 centos:7 的元數(shù)據(jù)。
執(zhí)行 RUN 指令:
- 清理默認(rèn)的 yum 源。
- 添加阿里云的 yum 源。
- 安裝必要的包(如 wget, gcc, zlib 等)。
- 下載 Nginx 的源代碼包。
- 解壓 Nginx 包。
- 編譯并安裝 Nginx。
- 導(dǎo)出鏡像:將構(gòu)建的內(nèi)容導(dǎo)出為一個(gè)新的鏡像,命名為 nginx:mynginx。
6.啟動(dòng)容器并測(cè)試
[root@localhost nginx]# docker run -d --name nginx01 -P nginx:mynginx f1489d3891a946dd667c11ac73fd588d5dd63021fbc89062cc152b33d24004d7
docker run:這是 Docker 的基本命令,用于創(chuàng)建并啟動(dòng)一個(gè)新容器。
-d:表示以“分離模式”(detached mode)運(yùn)行容器。容器將在后臺(tái)運(yùn)行,而不是在當(dāng)前終端中輸出日志。
--name nginx01:為新創(chuàng)建的容器指定一個(gè)名稱 nginx01。這樣可以方便后續(xù)管理和引用該容器,例如停止、啟動(dòng)或刪除容器時(shí)使用該名稱。
-P:自動(dòng)將容器的端口映射到主機(jī)上的隨機(jī)可用端口。Docker 會(huì)將容器內(nèi)部的端口(例如 Nginx 默認(rèn)的 80 端口)映射到主機(jī)的一個(gè)隨機(jī)端口上,這樣可以通過主機(jī)的這個(gè)隨機(jī)端口訪問容器內(nèi)的服務(wù)。
nginx:mynginx:指定要使用的鏡像及其標(biāo)簽。這里的 nginx 是鏡像名稱,mynginx 是鏡像的標(biāo)簽。它表示你要運(yùn)行的是名為 nginx 的鏡像的 mynginx 版本。
7. 查看端口狀態(tài)信息
查使用以下命令查看正在運(yùn)行的容器及其端口狀態(tài):
docker ps
你將看到類似以下的輸出:
[root@localhost nginx]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c99a84f4c5f4 nginx:mynginx "/usr/local/nginx/sb…" 3 seconds ago Up 2 seconds 0.0.0.0:32769->80/tcp, :::32769->80/

8. 進(jìn)行訪問測(cè)試
現(xiàn)在,你可以通過主機(jī)的隨機(jī)端口訪問 Nginx 服務(wù)。例如,如果輸出中顯示 32769,則可以在瀏覽器中訪問 http://localhost:32769 來測(cè)試 Nginx 是否正常運(yùn)行。
進(jìn)行訪問測(cè)試

總結(jié)
通過以上步驟,我們成功地在 Docker 中構(gòu)建并運(yùn)行了一個(gè) Nginx 容器。這一過程涵蓋了從下載基礎(chǔ)鏡像、創(chuàng)建工作目錄,到編寫 Dockerfile 和啟動(dòng)容器的完整流程。以下是一些關(guān)鍵點(diǎn)的總結(jié):
- 基礎(chǔ)鏡像的選擇:我們選擇了 CentOS 作為基礎(chǔ)鏡像,確保了與大多數(shù) Linux 系統(tǒng)的兼容性,同時(shí)也為后續(xù)安裝 Nginx 提供了一個(gè)穩(wěn)定的環(huán)境。
- Dockerfile 的編寫:通過精心設(shè)計(jì)的 Dockerfile,我們能夠自動(dòng)化安裝 Nginx 及其依賴項(xiàng),簡(jiǎn)化了手動(dòng)配置的復(fù)雜性。這種方法不僅提高了構(gòu)建的效率,還減少了人為錯(cuò)誤的可能性。
- 容器化的優(yōu)勢(shì):使用 Docker 運(yùn)行 Nginx 使得服務(wù)的部署和管理變得更加靈活。容器可以快速啟動(dòng)和停止,便于進(jìn)行版本控制和環(huán)境隔離。
- 可擴(kuò)展性和維護(hù)性:通過這種容器化的方式,后續(xù)的擴(kuò)展和維護(hù)變得更加簡(jiǎn)單。無論是增加新的功能,還是進(jìn)行性能優(yōu)化,都可以通過更新 Dockerfile 和重建鏡像來實(shí)現(xiàn),而不影響現(xiàn)有的服務(wù)。
- 快速訪問和測(cè)試:通過映射容器端口到主機(jī)的隨機(jī)端口,我們能夠方便地訪問 Nginx 服務(wù),快速進(jìn)行測(cè)試和驗(yàn)證。這一特性使得開發(fā)人員可以在本地環(huán)境中進(jìn)行高效的調(diào)試。
總之,這種方法不僅能夠幫助我們快速部署 Nginx 服務(wù),同時(shí)也為后續(xù)的擴(kuò)展和維護(hù)提供了便利。希望本教程對(duì)你有所幫助,激勵(lì)你在項(xiàng)目中使用 Docker 和 Nginx,提升開發(fā)和運(yùn)維的效率。
以上就是在Docker中構(gòu)建并運(yùn)行Nginx容器的完整教程的詳細(xì)內(nèi)容,更多關(guān)于Docker構(gòu)建Nginx容器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker下Redis集群(主從+哨兵)安裝配置的實(shí)現(xiàn)步驟
本文主要介紹了Docker下Redis集群(主從+哨兵)安裝配置的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-07-07
docker-compose管理容器network與ip問題
這篇文章主要介紹了docker-compose管理容器network與ip問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Docker Namespace容器隔離的實(shí)現(xiàn)
Namespace是Docker容器中的一種隔離機(jī)制,通過劃分資源獨(dú)立空間,確保容器之間互不干擾,本文主要介紹一下Docker Namespace容器隔離的實(shí)現(xiàn),感興趣的可以了解一下2024-11-11
Docker搭建Skywalking的實(shí)現(xiàn)示例
本文主要介紹了Docker搭建Skywalking的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
搭建docker-nginx服務(wù),訪問nginx報(bào)錯(cuò)403問題及解決
這篇文章主要介紹了搭建docker-nginx服務(wù),訪問nginx報(bào)錯(cuò)403問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
docker常用容器啟動(dòng)docker-compose.yml配置文件使用
這篇文章主要介紹了docker常用容器啟動(dòng)docker-compose.yml配置文件使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03

