背景:简单 FTP 服务进行数据交流

Docker Hub

一、Docker Hub 案例

image.png

二、Docker compose 案例

2.1、docker-compose 脚本文件

  1. version: '2'
  2. services:
  3. # ftp服务
  4. ftpServer:
  5. image: fauria/vsftpd ## 镜像
  6. #build: .
  7. container_name: xn_test_ftp
  8. privileged: true
  9. ports:
  10. - "20:20"
  11. - "21:21"
  12. - "21100-21110:21100-21110"
  13. volumes:
  14. - /media/data/ftp:/home/vsftpd ## ftp 文件根目录(宿主机文件访问权限需要配置 )
  15. restart: always
  16. environment:
  17. FTP_USER: xn_ftp ## default username
  18. FTP_PASS: xn_ftp ## default password
  19. PASV_ADDRESS: 192.168.16.198 ## 宿主机ip,被动模式时必须配置
  20. PASV_MIN_PORT: 21100 ## 下载随机端口最小值
  21. PASV_MAX_PORT: 21110 ## 下载随机端口最大值
  22. TZ: Asia/Shanghai

2.2、防火墙配置

默认 docker 命令默认开启,如果没有手动开启,以: firewall-cmd 为例

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

2.3、创建用户目录用于访问

默认已创建了用户。 例如:自定义一个用户,用户名=zhixing,密码=123456

## 进入容器
docker exec -it $[dockerName} bash

## 创建用户文件夹
mkdir /home/zhixing

## 编辑用户信息
vi /etc/vsftpd/virtual_users.txt
======
zhixing
123456
======

## 将登录的验证信息写入数据库
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

## 退出重启容器
// 略