docker部署nginx服務(wù)的實(shí)現(xiàn)步驟
我的一點(diǎn)點(diǎn)docker部署服務(wù)習(xí)慣,就是喜歡使用官方的鏡像,如果沒有官方的鏡像或者官方的鏡像不好用,我會(huì)找第三方使用量比較多的鏡像。這個(gè)習(xí)慣是基于安全的考慮,畢竟官方做得稍微安全點(diǎn),有漏洞也更新最快。
一、nginx的image準(zhǔn)備
1、docker search 搜索nginx

如如圖所示,STARS 第一為17705是官方的mysql鏡像。第三方bitnami/mysql的STARS為79。
2、https://hub.docker.com鏡像站搜索nginx

如圖所示,第一個(gè)是nginx的官方鏡像。
二、nginx官方部署nginx方法
1、docker 啟動(dòng)一個(gè)簡(jiǎn)單的nginx 實(shí)例
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -d \ nginx
- docker run:是啟動(dòng)一個(gè)docker 容器的命令。完整書寫方法應(yīng)該是docker container run。
- --name some-nginx: 給nginx容器起個(gè)名字,為some-nginx。
- -v /data/nginx/html:/usr/share/nginx/html:ro:v是volume的首字母,是卷的意思。就是把容器的目錄綁到宿主機(jī)上的目錄,好方便我們查看文件,修改文件。現(xiàn)在這個(gè)/data/nginx/html是宿主機(jī)上存放web文件的目錄,/usr/share/nginx/html是nginx容器里的目錄,ro是容器內(nèi)不能修改,會(huì)提示read-only。
- -d: d是detach的首字母,可以理解為后臺(tái)運(yùn)行這個(gè)nginx容器。
- nginx:指的nginx的鏡像名。tag是給一個(gè)版本nginx打個(gè)標(biāo)簽,如果不加:tag默認(rèn)為nginx:latest。nginx最新鏡像。
官方還有一個(gè)加載靜態(tài)文件的方法,就是以nginx官方鏡像為基礎(chǔ)鏡像,把靜態(tài)文件目錄復(fù)制 到新的鏡像里,這樣就不用綁定nginx需要內(nèi)容目錄。這個(gè)方法應(yīng)該不常用。除了你特別需求,不建議使用。

官方用生成一個(gè)加載靜態(tài)文件的鏡像啟動(dòng)nginx服務(wù)的方法
2、docker 啟動(dòng)一個(gè)暴露外網(wǎng)端口nginx 實(shí)例
#官方nginx鏡像暴露端口是80

dockerfile暴露的端口是80
#啟動(dòng)一個(gè)綁定外網(wǎng)端口是8080的nginx容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -p 8080:80 \ -d \ nginx
如果宿主機(jī)的ip是192.168.1.10,向nginx發(fā)起請(qǐng)求地址是http://192.168.1.10:8080
3.docker 啟動(dòng)一個(gè)暴露外網(wǎng)端口和nginx配置文件路徑的nginx 實(shí)例
假設(shè)宿主機(jī)的nginx配置文件存放目錄/data/nginx/nginxconf,如果手頭沒有nginx配置文件,可以把容器的nginx配置文件復(fù)制到/data/nginx/nginxconf,不過先要啟動(dòng)一下沒有綁配置的nginx容器,復(fù)制配置文件,刪除這個(gè)nginx容器,最后就可以啟動(dòng)綁定nginx配置文件路徑的nginx 實(shí)例。整個(gè)操作步驟如下:
第一步啟動(dòng)一個(gè)不綁定nginx配置文件的容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -p 8080:80 \ -d \ nginx
第二步復(fù)制some-nginx里nginx配置文件到宿主機(jī)的/data/nginxconf下
docker cp nginx:/etc/nginx /data/nginx/nginxconf mv /data/nginx/nginxconf/nginx/* /data/nginx/nginxconf/ rm -rf /data/nginx/nginxconf/nginx
第三步刪除nginx容器
docker rm -f some-nginx
第四步啟動(dòng)綁定nginx配置文件的nginx容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -v /data/nginx/nginxconf:/etc/nginx:ro \ -p 8080:80 \ -d \ nginx
-v /data/nginx/nginxconf:/etc/nginx:ro:/data/nginxconf宿主機(jī)上存儲(chǔ)nginx的配置文件路徑。/etc/nginx是容器里nginx配置文件路徑。
三、nginx容器里運(yùn)行nginx用戶

上圖是截至nginx官方說明,意思如下:
從1.17.0開始,基于alpine和debian的鏡像變體都使用相同的用戶和組id來刪除工作進(jìn)程的特權(quán)(容器nginx運(yùn)行用戶是nginx ,uid和gid都是101)
id nginx uid=101(nginx) gid=101(nginx) groups=101(nginx)
可以將映像作為特權(quán)較低的任意UID/GID運(yùn)行。然而,這需要修改nginx配置,以使用特定UID/GID對(duì)可寫的目錄??梢圆挥胣ginx用戶運(yùn)行nginx,我覺得沒有必要修改運(yùn)行用戶。
四、docker-compose啟動(dòng)nginx服務(wù)
#nginx的docker-compose.yml文件,存放在/data/nginx/下
version: '3.7'
services:
nginx:
image: nginx
restart: always
hostname: nginx
container_name: nginx
privileged: true
ports:
- 8080:80
volumes:
- /data/nginx/nginxconf:/etc/nginx
- /data/nginx/html:/usr/share/nginx/html
- /data/nginx/logs/:/var/log/nginx//data/nginx/logs/:/var/log/nginx/ 加了一個(gè)日志映射到宿主機(jī)目錄。好查看日志文件。
#docker-compose啟動(dòng)nginx
docker-compose -f /data/nginx/docker-compose.yml up -d
到此這篇關(guān)于docker部署nginx服務(wù)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker部署nginx服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用docker部署influxdb與 mongo的常用命令
這篇文章主要介紹了使用docker部署influxdb與 mongo的常用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Docker配置本地倉庫web訪問的實(shí)現(xiàn)
本文主要介紹了Docker配置本地倉庫web訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06
在Ubuntu?Server?22.04上安裝?Docker的詳細(xì)步驟記錄
通過使用容器技術(shù),Docker能夠讓開發(fā)人員將應(yīng)用及其依賴環(huán)境一同打包,從而實(shí)現(xiàn)快速部署、一致的開發(fā)環(huán)境和優(yōu)秀的可移植性,這篇文章主要給大家給大家介紹了關(guān)于在Ubuntu?Server?22.04上安裝?Docker詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下2024-08-08
詳解MAC OSX Docker開發(fā)環(huán)境搭建
本篇文章主要介紹了詳解MAC OSX Docker開發(fā)環(huán)境搭建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
docker nginx 定時(shí)腳本保存30天日志信息的實(shí)現(xiàn)
本文介紹了docker nginx 定時(shí)腳本保存30天日志信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01

