docker在centos7的安裝方式建議看官網教程,不然docker安裝nginx很可能出錯。
安裝docker可以直接參照我簡書上的安裝過程
- 用docker安裝Nginx的過程又學到了很多,例如複製docker容器內的文件到宿主機上等等
- 使用nginx的很重要的一點是修改nginx.conf這個配置文件
- 首先從dockerhub上拉取nginx最新的鏡像docker pull nginx
- 先簡單的啟動一個nginx容器,為了從容器中複製nginx.conf文件# docker啟動nginx容器,命名為test
docker run –name test -d nginx - 查看nginx容器iddocker ps -a注意:docker啟動nginx需要兩個配置文件此處參考☛迷彩誘惑的青春一個是位於容器內部的/etc/nginx/nginx.conf另一個是位於容器內部的/etc/nginx/conf.d/default.confdefault.conf配置的是server { }的內容所以在這裡我們需要把這兩個配置文件複製到宿主機用於掛載
- 創建目錄用於存放nginx.conf 和 default.conf# -p創建多級目錄
mkdir /usr/docker/nginx -pmkdir /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-portsdocker啟動命令解釋:
-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 “myusern5678” >> /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
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/273332.html
微信掃一掃
支付寶掃一掃