1. 查看docker已經(jīng)下載的(已有的)鏡像
請忽略我已下載好的nginx鏡像

2. 去官方公有倉庫查詢nginx鏡像
其中第一個就是nginx官網(wǎng)鏡像,且STARS最多,我們這次就用這個

3. 拉取該鏡像
因?yàn)槲抑袄∵^,所以后面的輸出和第一次拉取的輸出不是太一致

4. 再次查看本地鏡像
此時,就看到本地有了該鏡像

5. 啟動一下該鏡像,使用nginx服務(wù),代理本機(jī)8080端口(測試是不是好使)
-d: 后臺運(yùn)行
-p: 端口映射 冒號前是本機(jī)端口,冒號后是容器端口

訪問本機(jī)ip:8080 即可訪問該頁面,代表nginx啟動成功

6.關(guān)閉容器
docker stop XXXXX(容器id前幾位)

not end
至此 簡單的docker安裝nginx并啟動算是成功了,接下來就會產(chǎn)生一個疑問,如果我想修改nginx的配置怎么辦,我想更改nginx中的資源文件怎么辦?接下來給出一個最實(shí)用的辦法,就是將容器中的目錄和本機(jī)目錄做映射,以達(dá)到修改本機(jī)目錄文件就影響到容器中的文件。
1.本機(jī)創(chuàng)建實(shí)例文件夾
/home文件夾下新建mutou文件夾,木頭文件夾下新建nginx文件夾,nginx文件夾下新建conf.d文件夾,html文件夾,大致結(jié)構(gòu)如下:
/home
|---mutou
|----nginx
|----conf.d
|----html
2. 在conf.d文件夾下新建default.conf文件,內(nèi)容如下:
server {
listen 80;
server_name localhost;
# 原來的配置,匹配根路徑
#location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
#}
# 更該配置,匹配/路徑,修改index.html的名字,用于區(qū)分該配置文件替換了容器中的配置文件
location / {
root /usr/share/nginx/html;
index index-test.html index.htm;
}
}
3.在html中編寫index-test.html,用以判斷文件夾映射成功,內(nèi)容如下:
<html>
<body>
<h2>it is html1</h2>
</body>
</html>
4. 啟動nginx(8080),映射路徑
命令比較長,其實(shí)就是多加了兩個參數(shù),-v,-v的意思就是冒號前面代表本機(jī)路徑,冒號后面代表容器內(nèi)的路徑,兩個路徑進(jìn)行了映射,本機(jī)路徑中的文件會覆蓋容器內(nèi)的文件。
nginx容器內(nèi)的一些文件位置:
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
項(xiàng)目位置:/usr/share/nginx/html
啟動代碼如下:
docker run -d -p 8080:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d -v /home/mutou/nginx/html:/usr/share/nginx/html nginx

5. 驗(yàn)證
此時訪問ip:8080,發(fā)現(xiàn)展示的不是nginx的默認(rèn)頁面了,而是我們新加入的頁面,這樣就證明我們兩個
-v映射的文件夾都起作用了。

6. 開始反向代理
此時靜態(tài)頁面網(wǎng)站已經(jīng)部署上了,但是還是會顯示一個端口8080出來,就十分不爽,怎么把端口干掉呢?而是換成XXXXX.com/demo1 或者 XXXXX.com/demo2這種效果呢?下面使用nginx的反向代理實(shí)現(xiàn)。
7. 增加文件夾,達(dá)到下面的效果
/home
|---mutou
|----nginx
|----conf.d
|----html
|----conf.d2
我們在conf.d2中配置另一個nginx容器的配置文件,文件內(nèi)容如下:
server {
listen 80;
server_name localhost;
location /demo1 {
# 在該位置配置反向代理,將ip/demo1請求攔截,發(fā)送給8080端口,如果不是本機(jī)請使用公網(wǎng)ip
proxy_pass http://你的剛才的ip地址:8080/;
}
}
8. 再啟動一個nginx(80),專門作為反向代理映射,將本機(jī)80端口代理到nginx的80端口上,并映射兩端的配置文件地址。
docker run -d -p 80:80 -v /home/mutou/nginx/conf.d2:/etc/nginx/conf.d nginx
此時 訪問 ip/demo1 即可映射到了ip:8080上,成功完成反向代理。
image.png
9.拓展
當(dāng)有了反向代理后,自然而然就引出了
負(fù)載均衡,下面簡單實(shí)現(xiàn)負(fù)載均衡的效果,實(shí)現(xiàn)該效果再添加一個nginx,所以要增加一個文件夾。
/home
|---mutou
|----nginx
|----conf.d
|----html
|----conf.d2
|----html3
html3中的代碼如下:
<html>
<body>
<h2>it is html3</h2>
</body>
</html>
10. 啟動nginx(8081)
啟動命令如下:
docker run -d -p 8081:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d -v /home/mutou/nginx/html3:/usr/share/nginx/html nginx
11. 訪問ip:8081

12.配置負(fù)載均衡,訪問ip/demo1時,平均分發(fā)到8080端口和8081端口上,即it is html1和it is html3間接出現(xiàn)。
配置負(fù)載均衡,那就是配置在第二次的nginx上,就是反向代理的nginx上,我們?nèi)onf.d2文件夾下,修改default.conf文件,如下:
upstream group1{
server 你的剛才的ip地址:8080;
server 你的剛才的ip地址:8081;
}
server {
listen 80;
server_name localhost;
location /demo1 {
proxy_pass http://group1/;
}
}
此時,查看所有運(yùn)行中的docker容器:
docker ps

然后重啟該容器,
docker restart 容器id
13. 查看效果
訪問ip/demo1,每次刷新頁面,頁面都會在html1和html3中進(jìn)行切換,此時負(fù)載均衡的效果就實(shí)現(xiàn)了。

14. 配置負(fù)載均衡的權(quán)重
可以使用下面的配置修改兩個端口的權(quán)重(即誰被訪問的概率大)
upstream group1{
server 你的剛才的ip地址:8080 weight=1;
server 你的剛才的ip地址:8081 weight=10;
}
server {
listen 80;
server_name localhost;
location /demo1 {
proxy_pass http://group1/;
}
}
