linux下使用docker安裝ftp


公有雲 docker 搭建 ftp

1,拉取鏡像 :docker pull fauria/vsftpd

2,啟動容器: 參數說明

  • /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 端口映射設置成一樣
  • -d 后台運行,  20:20分別為宿主機端口和容器端口,容器端口可重復,宿主機端口不能重復 , -v 掛載目錄,將宿主機的 /home/ftp 掛載到容器中的 /home/vsftpd
  • -e 設置環境變量(以下是被動模式)  –network 連接容器到一個網絡 , --name 給容器取個名稱,容器重啟策略 --restart=always表示在容器退出時總是重啟容器

        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

3,控制台安全組配置開放端口范圍 21100-21110

4,新建用戶文件夾

  1)進入到容器里面  docker exec -it vsftpd bash

  2)可以看到在  /home/vsftpd/  文件夾下面有個 test 文件夾,啟動的時候設置用戶名為 test 已經自動創建了對應的 test 用戶文件夾

  3)在 test 用戶文件夾下新建一個 1.txt 文件,用來訪問該文件, vi /home/vsftpd/test/1.txt    (由於掛載到了宿主機的 /home/ftp 目錄,所以也可以在容器外面的 /home/ftp 目錄下創建文件)

5,使用瀏覽器進行訪問

6,如果不想使用 test 用戶,可以新增一個用戶

  1)進入到容器里面: docker exec -it vsftpd bash

  2)創建新用戶的文件夾: mkdir /home/vsftpd/payne

  3)編輯用戶配置文件: vi /etc/vsftpd/virtual_users.txt  里面已經有了 test  test  ,添加一個 payne 123456 保存

  4)執行以下命令,把登錄的驗證信息寫入數據庫: /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

  5)退出重啟  exit docker restart vsftpd 

7,使用 FileZilla 連接的話,站點管理器中選擇如下

8, 如果在 test 目錄下新建一個文件夾 sca_2/ ,

  chown -R  設置目錄以及其子目錄下的所有文件的獨寫權限,需要超級用戶 root 的權限才能執行此命令。

  chown root /home/vsftpd/test    更新 test 所屬者為 root ,更新 test 所屬組為 chgrp newgroup /home/vsftpd/test,

  如果在宿主機上使用 root 用戶建的目錄,掛載對應的容器里面的 test 目錄的權限就是 root ,此時使用 test 用戶登錄到 ftp 由於 test 目錄(所屬 root 用戶)的權限限制會無法操作,

  需要在 /home/vsftpd/test 目錄下 chmod -R 777 sca_2/ 修改權限,公共獨寫執行權限, test 連接上 ftp 后就能夠操作該目錄

  chmod -R 777,第一個7代表文件所屬者的權限,第二個7代表文件所屬者所在組的權限,第三個7代表其它用戶的權限 775 中 5表示讀和執行  4 是讀  2 寫 1 執行

  -R 是遞歸遍歷子目錄

 9,使用 compose,在 /data/compose/bin/docker-compose.yml 中:

  version: '2'
  services:
      ftp:
    image: fauria/vsftpd
    container_name: ftpnw
    restart: always
    networks:
        smart-network:
         aliases:
      - ftpnw
    ports:
        - 20-21:20-21
        - 21100-21200:21100-21200
    environment:
    TZ: "Asia/Shanghai"
    PASV_ENABLE: "YES"
    PASV_ADDR_RESOLVE: "YES"
    PASV_ADDRESS: 172.26.83.31
    PASV_MIN_PORT: "21100"
    PASV_MAX_PORT: "21200"
    FTP_USER: admin
    FTP_PASS: admin
    IDLE_SESSION_TIMEOUT: 0
   volumes:
    - ../ftp/data:/home/vsftpd
    - ../ftp/logs:/log/vsftpd
    - ../ftp/conf/vsftpd.conf:/etc/vsftpd/vsftpd.conf
  networks:
      smart-network:
      driver: bridge

../ftp/conf/vsftpd.conf 的內容:

# Run in the foreground to keep the container running:
background=NO

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

# Uncomment this to allow local users to log in.
local_enable=YES

## Enable virtual users
guest_enable=YES

## Virtual users will use the same permissions as anonymous
virtual_use_local_privs=YES

# Uncomment this to enable any form of FTP write command.
write_enable=YES

## PAM file name
pam_service_name=vsftpd_virtual

## Home Directory for virtual users
user_sub_token=$USER
local_root=/home/vsftpd/$USER

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES

# Workaround chroot check.
# See https://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/
# and http://serverfault.com/questions/362619/why-is-the-chroot-local-user-of-vsftpd-insecure
allow_writeable_chroot=YES

## Hide ids from user
hide_ids=YES

## Enable logging
xferlog_enable=YES
xferlog_file=/var/log/vsftpd/vsftpd.log

## Enable active mode
port_enable=YES
connect_from_port_20=YES
ftp_data_port=20

##?Disable seccomp filter sanboxing
seccomp_sandbox=NO
pasv_addr_resolve=YES
pasv_enable=YES
pasv_address=172.26.83.31
pasv_max_port=21200
pasv_min_port=21100
idle_session_timeout=0
pasv_enable=YES
xferlog_std_format=NO
reverse_lookup_enable=YES
pasv_promiscuous=NO
pasv_address=172.26.83.31
pasv_max_port=21200
pasv_min_port=21100
pasv_addr_resolve=YES
pasv_enable=YES
file_open_mode=0666
local_umask=077
xferlog_std_format=NO
reverse_lookup_enable=YES
pasv_promiscuous=NO
port_promiscuous=NO

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM