Linux中使用Docker構(gòu)建Nginx容器的詳細(xì)攻略
前言
在現(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.生成鏡像
[root@localhost nginx] 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)維的效率。
到此這篇關(guān)于Linux中使用Docker構(gòu)建Nginx容器完整教程的文章就介紹到這了,更多相關(guān)docker構(gòu)建nginx容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Docker容器中運(yùn)行Nginx的詳細(xì)教程
- centos docker容器化部署nginx php項(xiàng)目實(shí)踐
- docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷
- 在Docker中構(gòu)建并運(yùn)行Nginx容器的完整教程
- Docker安裝Nginx并部署及MySQL容器構(gòu)建全過程
- Docker容器下運(yùn)行Nginx并實(shí)現(xiàn)反向代理
- Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作
- Docker構(gòu)建python Flask+ nginx+uwsgi容器
- Docker容器簡(jiǎn)單部署nginx過程解析
- 詳解docker nginx 容器啟動(dòng)掛載到本地
相關(guān)文章
Docker/DockerSwarm部署LNMP并平滑升級(jí)PHP過程
本文詳細(xì)介紹了如何在CentOS上配置Docker環(huán)境、部署LNMP(Linux, Nginx, MySQL, PHP)服務(wù),并通過Docker Swarm實(shí)現(xiàn)PHP版本的平滑升級(jí),文章還涵蓋了配置內(nèi)核轉(zhuǎn)發(fā)、安裝Docker、配置鏡像倉庫、拉取鏡像、部署容器、連接容器、解決常見問題、升級(jí)應(yīng)用以及回滾測(cè)試等內(nèi)容2025-10-10
Docker?Compose最常用命令(直接復(fù)制用)
Docker Compose是Docker官方提供的一個(gè)用于管理多個(gè)容器的工具,可以使用docker-compose.yml文件定義和運(yùn)行多容器應(yīng)用,這篇文章主要介紹了Docker?Compose最常用命令的相關(guān)資料,需要的朋友可以參考下2025-11-11
使用Docker部署MySQL的實(shí)現(xiàn)步驟
本文主要介紹了Docker部署MySQL的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
基于docker搭建redis-sentinel集群的方法示例
這篇文章主要介紹了基于docker搭建redis-sentinel集群的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06
Docker實(shí)現(xiàn)容器之間通信的多種方式
在 Docker 中,實(shí)現(xiàn)容器之間的通信有多種方式,核心在于網(wǎng)絡(luò)配置,下面我從 基礎(chǔ)原理、常見方式、最佳實(shí)踐、以及 docker-compose 方式 全面講解,需要的朋友可以參考下2025-06-06
如何通過Dockerfile 創(chuàng)建 kali-novnc
這篇文章主要介紹了如何通過Dockerfile 創(chuàng)建 kali-novnc,在Dockerfile所在目錄運(yùn)行相關(guān)命令操作即可完成,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04
docker安裝nginx并部署前端項(xiàng)目的全過程
作為一個(gè)前端,代碼寫完,最后部署到服務(wù)器,這是一個(gè)必須要了解的過程,這篇文章主要給大家介紹了關(guān)于docker安裝nginx并部署前端項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-05-05

