使用Docker創(chuàng)建FTP服務器的過程解析
我們先了解一下FTP
文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在網(wǎng)絡上進行文件傳輸?shù)囊惶讟藴蕝f(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應用層, 使用 TCP 傳輸
不是 UDP, 客戶在和服務器建立連接前要經(jīng)過一個“三次握手”的過程, 保證客戶與服務器之間的連接是可靠的, 而且是面向連接, 為數(shù)據(jù)傳輸提供可靠保證。
FTP允許用戶以文件操作的方式(如文件的增、刪、改、查、傳送等)與另一主機相互通信。然而, 用戶并不真正登錄到自己想要存取的計算機上面而成為完全用戶, 可用FTP程序訪問遠程資源, 實現(xiàn)用戶往返傳輸文件、目錄管理以及訪問電子郵件等等, 即使雙方計算機可能配有不同的操作系統(tǒng)和文件存儲方式。
使用 Docker 搭建 FTP 服務,不僅十分簡單,而且可以對宿主機有一定的隔離。下面介紹下Docker創(chuàng)建FTP服務器,內(nèi)容介紹如下所示:
一.創(chuàng)建命令如下
docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /opt/vsftpd/file:/home/vsftpd -e FTP_USER=admin -e FTP_PASS=1234 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS=10.73.139.201 -e PASV_ENABLE=YES --name ftp --restart=always --privileged=true fauria/vsftpd
二.命令含義
| 參數(shù) | 含義 |
|---|---|
| -d | 后臺啟動容器 |
| -p 20:20 | 將外部的20端口映射到內(nèi)部的20端口 |
| -p 21:21 | 將外部的21端口映射到內(nèi)部的21端口 |
| -p 21100-21110:21100-21110 | 將外部的 21100-21110端口映射到內(nèi)部的21100-21110端口 |
| -v /opt/vsftpd/file:/home/vsftpd | 將本地磁盤的 /opt/vsftpd/file路徑映射到內(nèi)部的/home/vsftpd路徑 |
| -e FTP_USER=admin | ftp的主用戶 |
| -e FTP_PASS=1234 | ftp主用戶的密碼 |
| -e PASV_MIN_PORT=21100 | 最小被動端口 |
| -e PASV_MAX_PORT=21110 | 最大被動端口 |
| -e PASV_ADDRESS=10.73.139.201 | 指定本機的ip |
| -e PASV_ENABLE=YES | 啟動被動模式 |
| –name vsftpd | 取一個名字,之后可以用(docker stop 名字 )來停止容器 |
| –restart=always | 開機自啟動 |
| –privileged=true | 容器內(nèi)用戶獲取root權(quán)限 |
| fauria/vsftpd | 倉庫的鏡像 |
三.客戶端連接
1.客戶端可以直接安裝filezilla進行連接
如果你的客戶端連接不上,你需要用telnet命令來看下
telnet 10.73.139.201 21
如果報錯,那可能是防火墻沒有打通
2.如果是mac用戶,也可以用終端的ftp命令進行連接
ftp 10.73.139.201
輸入賬號admin,密碼1234
然后ls命令,如果報錯
500 Illegal PORT command.
500 Unknown command.
425 Use PORT or PASV first.
可以在ftp下執(zhí)行以下命令
pass
輸出
Passive mode on
這個時候,就可以正常的ls了
到此這篇關(guān)于Docker創(chuàng)建FTP服務器的文章就介紹到這了,更多相關(guān)Docker FTP服務器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用docker compose搭建一個elk系統(tǒng)的方法
這篇文章主要介紹了使用docker-compose搭建一個elk系統(tǒng)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
docker 使用CMD或者ENTRYPOINT命令同時啟動多個服務
這篇文章主要介紹了docker 使用CMD或者ENTRYPOINT命令同時啟動多個服務,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
講解使用Docker搭建Java Web運行環(huán)境
本篇文章詳細的介紹了使用Docker搭建Java Web運行環(huán)境,想要學習docker的同學可以了解一下。2016-11-11

