使用Docker搭建Vsftpd 的 FTP 服務(wù)的詳細(xì)過(guò)程
FTP 基礎(chǔ) 與 使用 Docker 搭建 Vsftpd 的 FTP 服務(wù)
前言
最近的工作中,需要將手機(jī)上的文件發(fā)送到公司的 FTP 的服務(wù)器。按照從前的思路,自然是,先將文件傳到電腦,再由電腦上傳到 FTP 服務(wù)器上;經(jīng)過(guò)一份搜索后找到了 質(zhì)感文件 這個(gè) Android 應(yīng)用,這樣就可以通過(guò)無(wú)線網(wǎng)直接連接 FTP 服務(wù)器了。
FTP 基礎(chǔ)FTP 需要兩個(gè)端口,一個(gè)是數(shù)據(jù)端口,一個(gè)是控制端口。在主動(dòng)模式下,控制端口一般為21,數(shù)據(jù)端口一般為20(控制端口 - 1);在被動(dòng)模式下,由服務(wù)器端和客戶端協(xié)商決定。FTP 地址為:ftp://用戶名:密碼@IP地址或域名:控制端口號(hào)FTP 的傳輸方式有兩種:
(1)ASCII傳輸方式,即假定用戶正在拷貝的文件包含簡(jiǎn)單的ASCII碼文本,通常傳輸時(shí)會(huì)自動(dòng)調(diào)整格式
(2)二進(jìn)制傳輸模式,即逐位傳輸FTP 的工作模式有兩種:
(1)PORT主動(dòng)模式,意為服務(wù)端主動(dòng)從20端口連接客戶端告知的端口
(2)PASV被動(dòng)模式,意為服務(wù)端 告知 客戶端 地址和端口后,等待客戶端連接
(3)對(duì)比:主動(dòng)模式需要客戶端必須開放端口給服務(wù)器,服務(wù)器要可以連上客戶端,這就要求客戶端為公網(wǎng) IP(經(jīng)過(guò) NAT 后地址就變化了)且防火墻打開。而實(shí)際情況下,公網(wǎng) IP 比較少而且很多客戶端都是在防火墻內(nèi),由路由器交換機(jī)進(jìn)行著 NAT,還要協(xié)調(diào)開放端口。被動(dòng)模式只需要服務(wù)器端開放端口給客戶端連接就行了,而服務(wù)器為了便于訪問(wèn),一般會(huì)放在公網(wǎng),所以被動(dòng)模式使用較多。主動(dòng)被動(dòng)模式選擇權(quán)在客戶端
此處比較奇怪,為什么服務(wù)器會(huì)告知客戶端地址,直接讓客戶端使用訪問(wèn)服務(wù)器時(shí)的地址不可以嗎?我的思考是,機(jī)器一般無(wú)法取得自己外網(wǎng)的地址,而且 FTP 協(xié)議中確有要求,要傳輸?shù)刂罚?/p>
(圖為 FileZilla 中被動(dòng)模式傳輸文件)
這里可能就會(huì)好奇了,前面的地址好理解,后面的兩個(gè)數(shù)字是什么意思。通過(guò)這篇文章得知,端口號(hào)為數(shù)字1 * 256 + 數(shù)字2
,Wireshark 中的截圖也印證了這一點(diǎn):
(圖為 Wireshark 中捕獲的傳輸接口)
使用 Docker 搭建 Vsftpd 的 FTP 服務(wù)
我們使用的 Docker 鏡像為 fauria/vsftpd。
docker run -d -v /root/ftp:/home/vsftpd \ --p 60020:20 -p 60021:21 -p 61100-61105:61100-61105 \ -e FTP_USER=battor -e FTP_PASS=nihaonihao123123 \ -e PASV_ADDRESS=1.2.3.4 -e PASV_MIN_PORT=61100 -e PASV_MAX_PORT=61105 \ --name vsftpd --restart=always fauria/vsftpd
-v 意為將容器中的路徑映射到本地文件系統(tǒng)(“冒號(hào)”前為 本地文件系統(tǒng)路徑,“冒號(hào)”后為 容器中的文件系統(tǒng)路徑)。
-p 意為將容器的端口號(hào)映射到本地,可以看到映射了一個(gè)范圍的地址,這些端口是被動(dòng)模式下開放給客戶端的,要與后面的 PASV_MIN_PORT (被動(dòng)模式最小端口) 和 PASV_MAX_PORT (被動(dòng)模式最大端口) 相對(duì)應(yīng)。
--name 用于指定容器名稱。
--restart 意為當(dāng) Docker 進(jìn)程重啟時(shí),立刻啟動(dòng)該容器。
我們自己部署服務(wù)器時(shí),應(yīng)當(dāng)盡量避免使用默認(rèn)端口,以減少被黑客攻擊的風(fēng)險(xiǎn)。故此處使用 60020 和 60021,以及 61100 至 61105 端口
此外需要注意的是,PASV_ADDRESS 需要配置為服務(wù)器對(duì)應(yīng)的外網(wǎng)地址。否則無(wú)法連接:
(圖為 質(zhì)感文件 中連接時(shí)的情況)
然鵝在 FileZilla 客戶端測(cè)試中發(fā)現(xiàn),即使 配置為 127.0.0.1,某些客戶端亦可以正常連接,猜測(cè)是因?yàn)榭蛻舳酥写嬖陬愃频脑O(shè)置:
(圖為 FileZilla 客戶端的設(shè)置)
后記
由于 FTP 中的文件較為隱私,在這里就不展示配置成功后的效果了,實(shí)際使用起來(lái)還是很方便滴。
再次推薦下 質(zhì)感文件 這個(gè) APP 吧,界面 Material Design 風(fēng)格,好看好用。支持 FTP 服務(wù)器,SFTP 服務(wù)器, SMB 服務(wù)器,還可作為 FTP 服務(wù)器使用。
參考
到此這篇關(guān)于使用 Docker 搭建 Vsftpd 的 FTP 服務(wù) 的文章就介紹到這了,更多相關(guān)Docker 搭建 Vsftpd FTP 服務(wù) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker update命令動(dòng)態(tài)更新容器配置
Docker的docker update命令提供了一種在不停止容器的情況下動(dòng)態(tài)調(diào)整其資源配置的能力,從而優(yōu)化性能或滿足特定需求,本文詳細(xì)介紹了docker update命令的使用方法、常用選項(xiàng)如CPU和內(nèi)存限制,感興趣的可以了解一下2024-10-10docker部署蝸牛影院系統(tǒng)詳細(xì)流程分析
這篇文章給大家介紹docker部署蝸牛影院系統(tǒng),在部署項(xiàng)目時(shí)系統(tǒng)硬件配置是CPU2核以上,內(nèi)存8G,詳細(xì)給大家介紹了安裝流程,對(duì)docker部署蝸牛電影院系統(tǒng)感興趣的朋友跟隨小編一起看看吧2021-05-05Docker compose部署SpringBoot項(xiàng)目連接MySQL及遇到的坑
這篇文章主要介紹了Docker compose部署SpringBoot項(xiàng)目連接MySQL,文中給大家強(qiáng)調(diào)了如果在使用的過(guò)程中修改了Dockerfile,一定要把之前的鏡像刪掉,具體內(nèi)容詳情跟隨小編一起看看吧2021-09-09docker-compose ports和expose的區(qū)別詳解
這篇文章主要介紹了docker-compose ports和expose的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
本文主要介紹了docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Docker?compose一鍵安裝mirai搭建QQ機(jī)器人最快操作方法
這篇文章主要介紹了Docker?compose一鍵安裝mirai,搭建QQ機(jī)器人最快方法,詳細(xì)介紹了mirai基本操作,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Docker數(shù)據(jù)存儲(chǔ)總結(jié)
今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲(chǔ)總結(jié),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟
OpenResty可以用來(lái)構(gòu)建高性能的Web應(yīng)用和服務(wù),本文主要介紹了Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03