Docker系列之九巧用Nginx

前言
Nginx
是個(gè)很棒的反向代理服務(wù)工具,之前我都是直接安裝到服務(wù)器上去,過程繁瑣也許不是難以接受,但是有更簡(jiǎn)單地Docker鏡像服務(wù),我自然沒必要再次舍近求遠(yuǎn)。

一些配置是參考自我以前的文章Docker系列一安裝Docker
和Hexo歷險(xiǎn)記之十Nginx端口轉(zhuǎn)發(fā)
。
安裝Nginx
拉取鏡像
訪問鏈接https://registry.hub.docker.com/_/nginx/tags來尋找鏡像的穩(wěn)定版本。

現(xiàn)在查看后發(fā)現(xiàn)穩(wěn)定版本為1.22.1,于是決定拉取這個(gè)版本的鏡像。
docker?pull?nginx:1.22.1
創(chuàng)建外部掛載目錄
先創(chuàng)建存儲(chǔ)目錄,保存容器中的數(shù)據(jù)和配置信息。
#?自定義新建的目錄名
export?Nginx=nginx
#?指定配置目錄、數(shù)據(jù)目錄
mkdir?-p?/home/keen/docker/$Nginx/conf
mkdir?-p?/home/keen/docker/$Nginx/log
mkdir?-p?/home/keen/docker/$Nginx/html
#?賦予權(quán)限
chmod?-R?755?/home/keen/docker/$Nginx/conf
創(chuàng)建臨時(shí)容器
如果現(xiàn)在直接運(yùn)行正式容器,那么在映射文件夾的時(shí)候,就會(huì)導(dǎo)致正式容器中的文件夾也全是空的。
所以必須要先創(chuàng)建一個(gè)臨時(shí)容器,將一些默認(rèn)的配置文件拷貝到宿主機(jī)中,刪除臨時(shí)容器后,重新創(chuàng)建一個(gè)完整的正式容器。
docker?run?\
????-p?80:80?\
????--name?temp?\
????-d?\
????nginx:1.22.1
接著進(jìn)入容器,找到要復(fù)制的東西。
#?進(jìn)入容器
docker?exec?-it?temp??/bin/bash

將臨時(shí)容器內(nèi)的文件復(fù)制到掛載路徑中。
conf
配置文件可以選擇默認(rèn)的配置文件,也可以將用過的歷史配置文件復(fù)制進(jìn)去,在Hexo歷險(xiǎn)記之十Nginx端口轉(zhuǎn)發(fā)
文章中有一些可參考的配置,有興趣的可以去了解。:?將容器nginx.conf文件復(fù)制到宿主機(jī)
docker?cp?nginx:/etc/nginx/nginx.conf?/home/keen/docker/$Nginx/conf
:?將容器conf.d文件夾下內(nèi)容復(fù)制到宿主機(jī)
docker?cp?nginx:/etc/nginx/conf.d?/home/keen/docker/$Nginx/conf/conf.d
:?或者是從本地用scp命令遷移歷史配置文件到服務(wù)器
scp??/Users/keen/Downloads/nginx/nginx.conf??root@39.96.12.167:/home/keen/docker/nginx/conf/nginx.conf
scp??/Users/keen/Downloads/nginx/conf.d/cert4?root@39.96.12.167:/home/keen/docker/nginx/conf/conf.d/cert4注意!如果是嵌套類型的配置文件,那么在主配置文件中要寫的是
include /etc/nginx/conf.d/*.conf;
。html
文件,直接將默認(rèn)的文件復(fù)制過去就可以了,主要就是500之類的提示頁(yè)面。docker?cp?temp:/usr/share/nginx/html/?/home/keen/docker/$Nginx/html/?

log
文件夾初始是空的并沒有影響。
現(xiàn)在可以銷毀并刪除臨時(shí)容器。
export?Chevereto=temp
docker?stop?$Chevereto?&&?docker?rm?$Chevereto
啟動(dòng)容器
docker?run?\
????--name?nginx1.22.1?\
????-p?80:80?\
????-d?\
????--restart=always?\
????--privileged=true?\
?-v?/home/keen/docker/$Nginx/conf/nginx.conf:/etc/nginx/nginx.conf?\
?-v?/home/keen/docker/$Nginx/conf/conf.d:/etc/nginx/conf.d?\
?-v?/home/keen/docker/$Nginx/log:/var/log/nginx?\
?-v?/home/keen/docker/$Nginx/html:/usr/share/nginx/html?\
?-v?/etc/localtime:/etc/localtime:ro?\
????nginx:1.22.1
--name nginx1.22.1
:容器名字為nginx1.22.1-p 80:80
:映射宿主機(jī)的 80 端口到容器服務(wù)的 80 端口-d
:后臺(tái)運(yùn)行--restart=always
:Docker 重啟的時(shí)候容器也會(huì)重啟–privileged=true
:容器內(nèi)的root擁有真正root權(quán)限,否則容器內(nèi)root只是外部普通用戶權(quán)限-v
:?從上到下分別是映射配置文件、映射配置文件目錄、映射日志文件目錄、映射資源目錄以及映射時(shí)間使用鏡像nginx的1.22.1版本
修改容器
如果在后面要重新映射端口,有兩種方式,一個(gè)是修改映射的端口,一個(gè)是創(chuàng)建新的容器。
具體的可以參考我的其他文章:Hexo歷險(xiǎn)記之十Nginx端口轉(zhuǎn)發(fā)。
感謝
感謝現(xiàn)在的好奇,為了能成為更好的自己。
Docker 安裝 Nginx 容器 (完整詳細(xì)版)