Docker篇之利用docker搭建ftp服务器可实现多用户上传

news/2024/7/3 18:57:56

一、前言
场景:公司需要搭建FTP服务器,供内网之前可以互相传递数据,安全稳定,需要满足开通多个账号,每个用户上传的文件有自己对应的文件目录。
这里建议:用户目录Disk尽量大一点,避免因为空间不足,导致上传失败

废话不说,直接上干货~
二、搭建步骤
利用docker部署,这里需要有docker环境,这里小编采用docker-compose进行部署,所以需要有docker-compose服务。
docker环境的搭建详见这里:
Centos7系统:
https://blog.csdn.net/xu710263124/article/details/115632708
docker-compose部署

// 安装docker-compose
wget https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-Linux-x86_64
cp docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version

1、搭建ftp服务
step1:

# 1、拉取vsftpd镜像
docker pull fauria/vsftpd

step2:
注意:这里选择一个Disk较大的盘,进行ftp信息存储,
编辑vsftpd-compose.yml文件

cd /data1/vsftp
vim vsftpd-compose.yml
version: "3"
services:
  vsftpd:
    image: fauria/vsftpd
    container_name: vsftpd
    restart: always
    ports:
      - "20:20"
      - "21:21"
      - "20000:20000"
    volumes:
      - "/data1/vsftp/ftp_user:/home/vsftpd"
      - "/data1/vsftp/log/vsftpd:/var/log/vsftpd/"
    environment:
      - FTP_USER=admin
      - FTP_PASS=admin
      - PASV_MIN_PORT=20000
      - PASV_MAX_PORT=20000
      - PASV_ADDRESS=xxx.xxx.xxx.xxx
      - LOG_STDOUT=1
 # 注:这里指定的FTP_USER为admin,以及密码,还有对应的PASV_ADDRESS需改为自己的宿主机ip。 
 # PASV_MIN_PORT和PASV_MAX_PORT映射的是被动模式下端口使用范围必须在服务器的防火墙中开启20、21、22和21100/21110端口

step3:这里需要提前创建好对应的ftp_user目录

// 不同用户上传的文件可在/data1/vsftp/ftp_user/下查询
 mkdir -p /data1/vsftp/ftp_user
 mkdir -p /data1/vsftp/log/vsftpd

step4:启动docker-compose文件

docker-compose -f vsftpd-compose.yml up -d

step5:启动成功后,通过文件夹形式访问
ftp://admin@xxx.xxx.xxx.xxx/
user: admin
passwd:admin
在这里插入图片描述
或者添加一个网络位置都可。
在这里插入图片描述
输入用户名密码即可 连接远程FTP服务器。

三、添加FTP普通用户
如果要创建多用户,可执行如下操作:
3. 创建多用户ftp
3.1 进入容器

docker exec -it vsftpd /bin/bash

3.2 编辑配置文件
提示:
注意使用vi编辑指令,其中奇数行为用户名,临近的下一个偶数行为密码,创建container时参数未加入用户名和密码,系统会默认创建admin和随机密码.
添加新用户的文件夹,以用户名命名

[root@huang /]# cat /etc/vsftpd/virtual_users.txt
admin
admin
ftp1
ftp1
ftp2
ftp2

3.3 创建用户目录

mkdir -p /home/vsftpd/ftp1
mkdir -p /home/vsftpd/ftp2

3.4 生产二进制文件

#生成二进制文件
db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

3.5 重启docker

docker restart vsftpd

退出容器
就可以在宿主机的/data1/vsftp/ftp_user下看到创建的对应用户了
在这里插入图片描述
ok~这样就可以利用不同用户进行连接了
在这里插入图片描述
在这里插入图片描述

End~


http://lihuaxi.xjx100.cn/news/1854152.html

相关文章

Flash学习

FLASH介绍 FLASH是常用的,用于存储数据的半导体器件,它具有容量大,可重复擦写,按“扇区/块”擦除、掉电后数据可继续保存的特性。 常见的FLASH有NOR FLASH和NAND FLASH。 NOR和NAND是两种数字门电路,可以简单地认为F…

【FMC140】 基于VITA57.4标准的双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+子卡模块

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

Java部署服务 Java -jar命令讲解

1. 当前ssh窗口被锁定,可按CTRL C打断程序运行,或直接关闭窗口,程序退出 #正常启动jar包 java -jar XXX.jar#当前ssh窗口被锁定,可按CTRL C打断程序运行,或直接关闭窗口,程序退出。 2. 当前ssh窗口不被锁…

聚观早报 |亚马逊AWS发布新AI芯片;拼多多Q3营收增长94%

【聚观365】11月30日消息 亚马逊AWS发布新AI芯片 拼多多Q3营收增长94% Redmi K70全新国风配色揭晓 英伟达扩大自动驾驶中国团队 华为nova 12参数细节曝光 亚马逊AWS发布新AI芯片 在美国时间周二举办的Reinvent大会上,亚马逊旗下的云计算部门AWS发布了新的人工…

11-30 SpringBoot2

热部署 开发过程中,修改代码,不需要重启,自动更新 项目上线,一定要关闭 SpringBoot热部署的实现?? ideal默认阻止class类更新 2.需要手动构建项目,可以使用快捷键激活此功能ctrl F9 / build project 自动构建项目 允许程序运行…

leetcode 18. 四数之和(优质解法)

代码&#xff1a; class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> listsnew ArrayList<>();int lengthnums.length;Arrays.sort(nums);for(int i0;i<length-4;){for(int ji1;j<lengt…

1657.确定两个字符串是否接近

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;1657. 确定两个字符串是否接近 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 当一个字符串中出现的字符全部在另一个字符串中出现并且 两字符串各字符出现次数排序后的 有序序列相同 时&a…

NX二次开发UF_MTX2_vec_multiply 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX2_vec_multiply Defined in: uf_mtx.h void UF_MTX2_vec_multiply(const double vec [ 2 ] , const double mtx [ 4 ] , double vec_product [ 2 ] ) overview 概述 Returns…