網站首頁 編程語言 正文
我們先了解一下FTP
文件傳輸協議(File Transfer Protocol,FTP)是用于在網絡上進行文件傳輸的一套標準協議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應用層, 使用 TCP 傳輸
不是 UDP, 客戶在和服務器建立連接前要經過一個“三次握手”的過程, 保證客戶與服務器之間的連接是可靠的, 而且是面向連接, 為數據傳輸提供可靠保證。
FTP允許用戶以文件操作的方式(如文件的增、刪、改、查、傳送等)與另一主機相互通信。然而, 用戶并不真正登錄到自己想要存取的計算機上面而成為完全用戶, 可用FTP程序訪問遠程資源, 實現用戶往返傳輸文件、目錄管理以及訪問電子郵件等等, 即使雙方計算機可能配有不同的操作系統和文件存儲方式。
使用 Docker 搭建 FTP 服務,不僅十分簡單,而且可以對宿主機有一定的隔離。下面介紹下Docker創建FTP服務器,內容介紹如下所示:
一.創建命令如下
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
二.命令含義
參數 | 含義 |
---|---|
-d | 后臺啟動容器 |
-p 20:20 | 將外部的20端口映射到內部的20端口 |
-p 21:21 | 將外部的21端口映射到內部的21端口 |
-p 21100-21110:21100-21110 | 將外部的 21100-21110端口映射到內部的21100-21110端口 |
-v /opt/vsftpd/file:/home/vsftpd | 將本地磁盤的 /opt/vsftpd/file路徑映射到內部的/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 | 容器內用戶獲取root權限 |
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下執行以下命令
pass
輸出
Passive mode on
這個時候,就可以正常的ls了
原文鏈接:https://blog.csdn.net/qq_25955145/article/details/123923695
相關推薦
- 2022-10-05 Iptables防火墻四表五鏈概念及使用技巧詳解_安全相關
- 2023-01-15 C++實現自定義撤銷重做功能的示例代碼_C 語言
- 2022-12-23 C語言例題之輸出1000以內的所有完數_C 語言
- 2022-05-28 Pyinstaller打包Pytorch框架所遇到的問題_python
- 2022-06-12 Android?Flutter利用貝塞爾曲線畫一個小海豚_Android
- 2022-07-02 使用yum命令時報錯Cannot retrieve metalink for repository
- 2022-03-27 Android使用kotlin實現多行文本上下滾動播放_Android
- 2022-04-10 C#實現簡單的計算器小功能_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支