關注我更多精彩文章第一時間推送給你
講真的我這輩子絕對不會學docker-----------------能香,哈哈!
docker在centos7的安裝方式建議看官網教程,否則docker安裝nginx極可能出錯。html
安裝docker能夠直接參照我簡書上的安裝過程 https://www.jianshu.com/p/3b28f3416ddanginx
<!--more-->docker
-
用docker安裝Nginx的過程又學到了不少,例如複製docker容器內的文件到宿主機上等等數據庫
-
使用nginx的很重要的一點是修改nginx.conf這個配置文件windows
-
首先從dockerhub上拉取nginx最新的鏡像centos
docker pull nginx
-
先簡單的啓動一個nginx容器,爲了從容器中複製nginx.conf文件瀏覽器
# docker啓動nginx容器,命名爲test docker run --name test -d nginx
-
查看nginx容器idbash
docker ps -a
注意:docker啓動nginx須要兩個配置文件
<a href="https://blog.csdn.net/weixin_42880943/article/details/100777093?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task" class="LinkCard">此處參考☛迷彩誘惑的青春</a> https://blog.csdn.net/weixin_42880943/article/details/100777093?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task服務器
- 一個是位於容器內部的
/etc/nginx/nginx.conf
- 另外一個是位於容器內部的
/etc/nginx/conf.d/default.conf
default.conf
配置的是server { }
的內容
因此在這裏咱們須要把這兩個配置文件複製到宿主機用於掛載
- 一個是位於容器內部的
-
建立目錄用於存放nginx.conf 和 default.conf網絡
# -p建立多級目錄 mkdir /usr/docker/nginx -p mkdir /usr/docker/nginx/conf.d/ -p
-
從nginx容器中複製出nginx文件到剛纔新建的目錄
# docker複製容器id爲e9bf057b53bb的/etc/nginx/nginx.conf路徑的nginx.conf文件到容器外宿主機的/docker/nginx/目錄 docker cp e9bf057b53bb:/etc/nginx/nginx.conf /usr/docker/nginx/ # 複製default.conf,含義參考上條註釋 docker cp e9bf057b53bb:/etc/nginx/conf.d/default.conf /usr/docker/nginx/conf.d/
-
複製出來以後刪除剛纔臨時啓動的test的容器
#中止名爲test的容器 docker stop test #刪除名爲test的容器 docker rm test
-
從新啓動一個完整的nginx容器
docker run -d -p 80:80 \ --name nginx --net host \ -v /usr/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \ -v /usr/docker/nginx/html:/usr/share/nginx/html \ -v /usr/docker/vsftpd/root:/mnt/data \ -v /usr/docker/nginx/logs:/var/log/nginx \ --privileged=true --restart=always nginx
下面的配置解釋很重要****
結合我default.conf的配置看
解釋:
-p 宿主機的80端口映射到容器的80端口
--name nginx 容器命名爲nginx
--net host 容器和宿主機公用網絡
-v 映射宿主機和容器內的路徑,首先是把兩個配置文件nginx.conf和default.conf從容器目錄映射到宿主機的/usr/docker/nginx下的相應目錄中,以後只要改宿主機的配置就至關於改了容器中的配置文件。
其次看下面圖片中的配置全是去找的容器相應位置的文件,沒錯,就是找容器相應位置,可是這些位置我也作了映射,例如把nginx的主頁位置映射到了/usr/docker/nginx/html最重要的是把靜態資源的位置映射到了宿主機的vsftpd靜態資源服務器/usr/docker/vsftpd/root目錄下,結合default.conf中的配置,就能經過nginx訪問vsftpd下的靜態圖片文件了。
-v 還作了日誌文件目錄的映射
--privileged=true 給容器內root權限
--restart=always 隨docker自啓動
啓動nginx:latest鏡像
- 開啓防火牆相關端口
#開啓宿主機防火牆80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent #重啓防火牆 firewall-cmd --reload #查看防火牆已經啓動的端口 firewall-cmd --zone=public --list-ports
-
這時候打開瀏覽器訪問宿主機ip我這裏是192.168.137.100就應該訪問調到nginx歡迎頁,這裏會報錯403由於/usr/docker/nginx/html路徑下並無index.html這個歡迎頁
-
額,可是準確的說nginx已經做爲docker容器啓動了
# 簡單的本身寫一個歡迎頁吧,最起碼訪問宿主機ip我這是192.168.137.100要看到效果啊 cd /usr/docker/nginx/html # 添加一個index.html文件寫入hello nginx echo "hello nginx" > index.html # 容器中的nginx熱更新 docker exec -it nginx nginx -s reload # 無論用就直接重啓ngixn容器 docker restart nginx # 強迫症非要nginx首頁如個人話,我直接拷貝windows中nginx的index頁到/usr/docker/nginx/html中了
到這nginx容器啓動好了,下面啓動vsftpd容器
#拉取vsftpd鏡像 docker pull fauria/vsftpd #啓動容器 docker run -d -v /usr/docker/vsftpd:/home/vsftpd \ -p 20:20 -p 21:21 -p 21100-21110:21100-21110 \ -e FTP_USER=root -e FTP_PASS=123456 \ -e PASV_ADDRESS=192.168.137.100 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \ --name vsftpd --privileged=true --restart=always fauria/vsftpd #開啓20防火牆端口 firewall-cmd --zone=public --add-port=20/tcp --permanent #開啓21防火牆端口 firewall-cmd --zone=public --add-port=21/tcp --permanent #開啓21100-21110防火牆端口 firewall-cmd --zone=public --add-port=21100-21110/tcp --permanent #重啓防火牆 firewall-cmd --reload #查看防火牆已經啓動的端口 firewall-cmd --zone=public --list-ports
docker啓動命令解釋:
-v掛載目錄,至關於把容器內目錄掛載到本地
-p 端口映射本地20容器20 ....等等
-e 分別設置用戶名、密碼、宿主機地址、最小最大端口
--name 命名容器爲vsftpd
--privileged=true 給容器root權限
--restart=always 隨docker開啓而自啓動
fauria/vsftpd 運行的run的這個名字的鏡像
-
打開瀏覽器訪問
ftp://192.168.137.100
-
至此文件服務器搭建成功
-
將新的FTP用戶添加到現有容器中
# 進入容器內部 docker exec -it vsftpd bash # 新建myuser用戶的文件夾 mkdir /home/vsftpd/myuser # 添加新用戶myuser換行密碼5678寫入文件中 echo -e "myuser\n5678" >> /etc/vsftpd/virtual_users.txt # 密碼寫入數據庫 /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db # 退出容器內部 exit # 重啓vsftpd docker restart vsftpd
-
經過nginx訪問到靜態資源服務器中的圖片了
http://192.168.16.128/images/test.png
-
用nginx是方便咱們使用http協議訪問靜態資源服務器
-
其實只須要安裝vsftpd就能ftp協議上傳圖片了,瀏覽器訪問
ftp://192.168.16.128
,填寫咱們以前設置的用戶名root
密碼5678