Docker一行命令完成FTP服務搭建

一行命令

docker run -d \
-v /share:/home/vsftpd \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-e FTP_USER=zhaoolee \
-e FTP_PASS=eelooahz \
-e PASV_ADDRESS=47.106.108.135 \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21100 \
--name zhaoolee_vsftpd  \
--restart=always \
fauria/vsftpd
複製代碼

參數解釋:

-d 表示新建容器在後臺運行php

-v 表示設置目錄映射 設置舉例 -v /share:/home/vsftpd 將宿主機的/share目錄映射到docker容器的/home/vsftpd (用戶zhaoolee登陸後, 程序會在/home/vsftpd文件夾下, 自動新建一個zhaoolee文件夾, 用來存放上傳的文件)git

-p 爲映射端口 -p 20:20 表示將宿主機20端口映射到docker容器的20端口,-p 21:21 表示將宿主機21端口映射到docker容器的21端口, -p 21100-21110:21100-21110 表示將宿主機的2110021110端口映射到docker容器的2110021110端口github

與端口密切相關的是主動模式被動模式兩種鏈接方式docker

  • 主動模式: 21端口爲ftp默認的端口,是ftp的控制端口, 而20端口是ftp的數據端口, 21端口用來接收客戶端鏈接, 20端口用來傳輸數據; 服務器(主動地)定下規矩,客戶端與服務端創建鏈接, 那經過21端口, 想傳數據就經過20端口, 20端口和21端口結合到一塊兒就是ftp的主動模式安全

  • 被動模式: 主動模式有一些安全性問題, 若是有人想攻擊你的ftp服務, 就直接到20端口堵你, 爲了不數據出門被人堵, 就出現了被動模式, 被動模式把傳數據的20端口, 改爲了範圍, 好比上文中的21100-21110, 具體哪一個值由客戶端來定(好比21115), 這樣傳出的數據就不容易被人堵,安全性大大提高, 如今大多數ftp客戶端,默認使用被動模式鏈接服務器, 也就是由客戶端定傳數據的端口bash

-e 表示追加參數服務器

FTP_USER 爲ftp登陸用戶名, 設置示例 FTP_USER=zhaoolee測試

FTP_PASS 爲ftp登陸密碼, 設置示例 FTP_PASS=eelooahz阿里雲

PASV_ADDRESS 爲外網ip , 設置示例PASV_ADDRESS=104.243.20.148 (很是重要: 這裏必定要綁定宿主機對外的ip, 不然後面會連不上, zhaoolee在這裏調了很久...)spa

PASV_MIN_PORT爲客戶端鏈接服務器的最小端口號爲21100 (被動模式下服務端最小端口號)

PASV_MAX_PORT爲客戶端鏈接服務器的最大端口號爲21110 (被動模式下服務端最大端口號)

--name zhaoolee_vsftpd 表示容器名爲 zhaoolee_vsftpd(這個名字能夠自定義)

--restart=always 表示 restart能夠

fauria/vsftpd 表明鏡像名

用阿里雲作個測試

  • 開啓 端口20 , 端口21, 端口段21100-21110

  • 建立容器

  • 經過ftp上傳文件

小結:

  • ftp是一個經常使用的服務, 這裏使用vsftp的docker方式完成搭建, 一行命令搞定
  • docker鏡像 fauria/vsftpd 開源地址: github.com/fauria/dock…, 能夠找到詳細的操做文檔
相關文章
相關標籤/搜索