1. 程式人生 > 其它 >Linux|--Docker|--FTP|--搭建FTP伺服器

Linux|--Docker|--FTP|--搭建FTP伺服器

準備工作

[
"docker"
]

1.0.docker|--拉取ftp映象

#docker拉取ftp映象
docker pull fauria/vsftpd

1.1.docker|--執行ftp容器

docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /home/harry/devicemanagement/test/uploadfile/upgrade:/home/vsftpd/root/upgrade -e FTP_USER=root -e FTP_PASS=123456 -e PASV_ADDRESS=宿主ip -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd
docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /usr/local/nginx/html/:/home/vsftpd/ -e FTP_USER=test -e FTP_PASS=123456 -e PASV_ADDRESS=8.131.253.241 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name ftp --restart=always fauria/vsftpd
sudo docker run -d -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -v /usr/local/nginx/html/LJ_ManageSystem.Web:/home/vsftpd/panlianxia/LJ_ManageSystem.Web -e FTP_USER=panlianxia -e FTP_PASS=plx1234 -e PASV_ADDRESS=X.X.X.X -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name ftp --restart=always fauria/vsftpd
sudo docker run -d -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -v /usr/local/nginx/html/LJ_ManageSystem.Web:/home/vsftpd/panlianxia/LJ_ManageSystem.Web -e FTP_USER=panlianxia -e FTP_PASS=plx1234 -e PASV_ADDRESS=X.X.X.X -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e LOCAL_UMASK=022 --name ftp --restart=always fauria/vsftpd

{
"-p 21:21":"對映埠 - 控制用",
"-p 20:20":"對映埠 - 資料傳輸用",
"-p 20:20":"對映路徑 - (格式 → 宿主機的ftp目錄:docker容器檔案根目錄)",
"-e FTP_USER=root -e FTP_PASS=123456":"環境變數 - 設定預設的使用者名稱密碼",
"-e PASV_ADDRESS=X.X.X.X":"環境變數 - 宿主機公網IP(注意不是本機IP地址)(當需要使用被動模式時必須設定)",
"-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110":"環境變數 - 給客服端提供下載服務隨機埠號範圍(預設 21100-21110)",
"-e LOCAL_UMASK=022":"環境變數 - 預設情況下vsftp上傳之後檔案的許可權是600(-rw-------,導致不能訪問html檔案,所以我需要調整一下許可權),目錄許可權是700",
"--name ftp ":"docker容器名稱",
"--restart=always":"容器重啟策略 - 容器退出時總是重啟容器",
"fauria/vsftpd":"映象名稱"
}

容器執行注意事項
1.關於"LOCAL_UMASK"的傳送門→

#嘗試修改"/etc/vsftpd/vsftpd.conf">>"local_umask",
#但是重啟容器之後,配置項沒有起作用,所以最後直接修改的docker run的引數"-e LOCAL_UMASK=022"
sudo docker exec -it ftp bash
vi /etc/vsftpd/vsftpd.conf
umask是unix作業系統的概念 , umask決定目錄和檔案被建立時得到的初始許可權
umask = 022 時 ,新建的目錄許可權是 755 ,檔案的許可權是 644
umask = 077 時 ,新建的目錄許可權是 700 ,檔案的許可權時 600
vsftpd的local_umask和anon_umask借鑑了它
預設情況下vsftp上傳之後檔案的許可權是600 ,目錄許可權是700
想要修改上傳之後檔案的許可權 ,有兩種情況
如果使用vsftp的是本地使用者
則要修改配置檔案中的 local_umask 的值
如果使用vsftp的是虛擬使用者
則要修改配置檔案中的 anon_umask 的值
————————————————
版權宣告:本文為CSDN博主「小大宇」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/yanluandai1985/article/details/119893412

2.關於路徑對映"-v"和使用者"test"路徑的關係

"-v /usr/local/nginx/html/:/home/vsftpd/html -e FTP_USER=test -e FTP_PASS=123456"
如果容器命令是這麼設定 , 那麼情境是這樣的
1.容器中(執行命令進入"docker exec -it ftp /bin/bash"),會為使用者"test"在容器中的目錄下"/home/vsftpd/"建立目錄"test"
2.當你使用ftp客戶端登入該ftp伺服器的時候,上傳的檔案會在"/home/vsftpd/test"目錄下,
而你對映的容器目錄在"/home/vsftpd/html",所以不會上傳至宿主機目錄"/usr/local/nginx/html/"下.
3.總結來說:要先知道使用者的目錄結構,再去想一下對映目錄(引數"-v")

2.0.雲伺服器配置|--安全組埠開放

必須在伺服器的防火牆中開啟20、21、22和21100/21110埠

3.0.FTP客戶端(Windows系統)|--控制面板\程式\程式和功能\Internet Explorer Services\FTP伺服器

剛開始提示錯誤:

Windows 無法訪問此資料夾。請確保輸入的檔名是正確的,並且你有權訪問此資料夾。

詳細資訊:
無法與伺服器建立連線

4.0.總結

1.過程中粗心把IP地址拼錯了
2.預設情況下vsftp上傳之後檔案的許可權是600(-rw-------,導致不能訪問html檔案,需要調整一下許可權),最終修改了引數"LOCAL_UMASK=022"
3.對映路徑"-v /usr/local/nginx/html/:/home/vsftpd/html -e FTP_USER=test -e FTP_PASS=123456",一開始不清除兩者之間的關係