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

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

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

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

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

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

