logo头像

星星給予仰望者光芒

Docker - 在容器中搭建 FTP 伺服器 (vsftpd)

本文于 587 天之前發表,文章内容可能已經過時。

  Docker - 在容器中搭建 FTP 伺服器 (vsftpd)

使用 Docker 搭建 FTP 服務,不僅十分簡單,而且可以對宿主機有一定的隔離。

下面以 CentOS 系統為例,演示如何通過容器運行 FTP 服務。

  1. 拉取鏡像
    首先執行如下命令將鏡像下載至電腦:
1
docker pull fauria/vsftpd
  1. 啓動容器
    執行如下命令實例化 FTP 服務:
1
2
3
4
5
6
7
參數說明:
/home/ftp:/home/vsftpd: 映射 docker 容器 FTP 文件根目錄(冒號前面是宿主機的目錄)
-p: 映射 docker 端口(冒號前面是宿主機的端口)
-e FTP_USER=test -e FTP_PASS=test : 設置默認的用戶名密碼(都為 test)
PASV_ADDRESS : 宿主機 ip,當需要使用被動模式時必須設置。
PASV_MIN_PORT~ PASV_MAX_PORT : 給客服端提供下載服務隨機端口號範圍,
默認 21100-21110,與前面的 docker 端口映射設置成一樣。
1
2
3
4
5
6
docker run -d -v /home/ftp:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=test -e FTP_PASS=test \
-e PASV_ADDRESS=192.168.60.128 \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
  1. 防火牆配置
    如果 CentOS 服務器有防火牆,為了讓客戶端能夠訪問 FTP 服務。

    我們可以關閉防火牆,或者執行如下命令配置 firewall 防火牆策略:
    (此步驟可忽略)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=21100/tcp
firewall-cmd --permanent --add-port=21101/tcp
firewall-cmd --permanent --add-port=21102/tcp
firewall-cmd --permanent --add-port=21103/tcp
firewall-cmd --permanent --add-port=21104/tcp
firewall-cmd --permanent --add-port=21105/tcp
firewall-cmd --permanent --add-port=21106/tcp
firewall-cmd --permanent --add-port=21107/tcp
firewall-cmd --permanent --add-port=21108/tcp
firewall-cmd --permanent --add-port=21109/tcp
firewall-cmd --permanent --add-port=21110/tcp
firewall-cmd --reload
  1. 新建用戶文件夾

(1) 首先執行如下命令進入到容器裡面:

1
docker exec -i -t vsftpd bash

(2) 由於前面我們啓動的時候設置用戶名為 test,

已經自動創建對應的用戶文件夾(所以下面這個文件夾無需我們再次手動創建):

1
mkdir /home/vsftpd/test

(3) 為方便演示,在 test 用戶文件夾下新建一個 1.txt 文件。

1
vi /home/vsftpd/test/1.txt
  1. 訪問服務

(1)我們可以直接使用瀏覽器進行訪問,地址如下:

1
ftp://test:test@192.168.60.128:21

(2)也可以使用 FTP 客戶端工具進行訪問。

(3)如果是 MacOS,我們還可以通過「Finder」->「前往」->「連接伺服器…」來訪問 FTP 服務。


附:增加一個新用戶

前面我們在啓動服務的時候就創建了個默認用戶 test。

如果需要新增一個新用戶,假設用戶名稱:tinxie,密碼:123456,具體操作如下。

(1)首先執行如下命令進入到容器裡面:

1
docker exec -i -t vsftpd bash

(2)創建新用戶的資料夾:

1
mkdir /home/vsftpd/tinxie

(3)編輯用戶配置文件:

1
vi /etc/vsftpd/virtual_users.txt

(4)在文件中新增新用戶的用戶名和密碼:

(5)保存退出後執行如下命令,把登錄的驗證資訊寫入資料庫。

1
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

(6)最後退出容器,並重啓容器可以使用新用戶連接 FTP 服務了。

1
2
exit
docker restart vsftpd