1. 查看docker已經(jīng)下載的(已有的)鏡像
請忽略我已下載好的nginx鏡像
2. 去官方公有倉庫查詢nginx鏡像
其中第一個就是nginx官網(wǎng)鏡像斑唬,且STARS最多徒役,我們這次就用這個
3. 拉取該鏡像
因為我之前拉取過袍暴,所以后面的輸出和第一次拉取的輸出不是太一致
4. 再次查看本地鏡像
此時贞言,就看到本地有了該鏡像
5. 啟動一下該鏡像妄田,使用nginx服務酱塔,代理本機8080端口(測試是不是好使)
-d: 后臺運行
-p: 端口映射 冒號前是本機端口,冒號后是容器端口
訪問本機ip:8080 即可訪問該頁面赫舒,代表nginx啟動成功
6.關閉容器
docker stop XXXXX(容器id前幾位)
not end
至此 簡單的docker安裝nginx并啟動算是成功了,接下來就會產(chǎn)生一個疑問葵礼,如果我想修改nginx的配置怎么辦艰山,我想更改nginx中的資源文件怎么辦橡娄?接下來給出一個最實用的辦法瓶籽,就是將容器中的目錄和本機目錄做映射俏让,以達到修改本機目錄文件就影響到容器中的文件。
1.本機創(chuàng)建實例文件夾
/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ù)痘括,-v,-v的意思就是冒號前面代表本機路徑滔吠,冒號后面代表容器內(nèi)的路徑纲菌,兩個路徑進行了映射,本機路徑中的文件會覆蓋容器內(nèi)的文件疮绷。
nginx容器內(nèi)的一些文件位置:
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
項目位置:/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. 驗證
此時訪問ip:8080翰舌,發(fā)現(xiàn)展示的不是nginx的默認頁面了,而是我們新加入的頁面冬骚,這樣就證明我們兩個
-v
映射的文件夾都起作用了椅贱。
6. 開始反向代理
此時靜態(tài)頁面網(wǎng)站已經(jīng)部署上了懂算,但是還是會顯示一個端口8080出來,就十分不爽庇麦,怎么把端口干掉呢犯犁?而是換成XXXXX.com/demo1 或者 XXXXX.com/demo2這種效果呢?下面使用nginx的反向代理實現(xiàn)女器。
7. 增加文件夾酸役,達到下面的效果
/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端口,如果不是本機請使用公網(wǎng)ip
proxy_pass http://你的剛才的ip地址:8080/;
}
}
8. 再啟動一個nginx(80)丧诺,專門作為反向代理映射入桂,將本機80端口代理到nginx的80端口上,并映射兩端的配置文件地址驳阎。
docker run -d -p 80:80 -v /home/mutou/nginx/conf.d2:/etc/nginx/conf.d nginx
此時 訪問 ip/demo1 即可映射到了ip:8080上抗愁,成功完成反向代理。
9.拓展
當有了反向代理后呵晚,自然而然就引出了
負載均衡
,下面簡單實現(xiàn)負載均衡
的效果蜘腌,實現(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.配置負載均衡撮珠,訪問ip/demo1時,平均分發(fā)到8080端口和8081端口上金矛,即it is html1
和it is html3
間接出現(xiàn)芯急。
配置負載均衡,那就是配置在第二次的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/;
}
}
此時榕酒,查看所有運行中的docker容器:
docker ps
然后重啟該容器,
docker restart 容器id
13. 查看效果
訪問ip/demo1嗜湃,每次刷新頁面奈应,頁面都會在html1和html3中進行切換,此時負載均衡的效果就實現(xiàn)了购披。
14. 配置負載均衡的權(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/;
}
}