当前位置: 首页 > news >正文

ubuntu制做vsftpd的docker镜像

一、Dockerfile

FROM ubuntu:24.04  
 
RUN apt-get update 
RUN apt-get install -y vsftpd 
  
RUN mkdir -p /var/run/vsftpd/empty
RUN mkdir -p /home/vsftpd 

COPY ./conf/vsftpd.conf /etc/vsftpd.conf
COPY ./conf/start-vsftpd.sh /usr/local/bin/start-vsftpd.sh
RUN  chmod +x /usr/local/bin/start-vsftpd.sh

EXPOSE 20 21 21100-21110

CMD ["/usr/local/bin/start-vsftpd.sh"]

二、 vsftpd.conf

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=YES
pasv_min_port=21100
pasv_max_port=21110
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
allow_writeable_chroot=YES
pasv_address=192.168.109.200

三、start-vsftpd.sh

#!/bin/bash

if [ -n "$PASV_ADDRESS" ]; then
  sed -i "s/pasv_address=.*/pasv_address=$PASV_ADDRESS/" /etc/vsftpd.conf
fi

if [ -n "$FTP_USER" ] && [ -n "$FTP_PASS" ]; then
  useradd -m -d /home/vsftpd/$FTP_USER $FTP_USER
  echo "$FTP_USER:$FTP_PASS" | chpasswd
  echo $FTP_USER > /etc/vsftpd.userlist
  chown $FTP_USER:$FTP_USER /home/vsftpd/$FTP_USER
fi

/usr/sbin/vsftpd /etc/vsftpd.conf

四、构建容器


#!/bin/bash
name=ftp-svc

docker build -t  $name  .

docker run -d  \
   -p 220:20   -p 221:21  \
   -p 21100-21110:21100-21110   \
   -e PASV_ADDRESS=192.168.109.200  \
   -e FTP_USER=wmy   \
   -e FTP_PASS=123456  \
   -v ./data:/home/vsftpd/wmy  \
   --name $name \
   $name

  

http://www.dtcms.com/a/108378.html

相关文章:

  • git总是链接不成功
  • Excel处理控件Spire.XLS系列教程:C# 打印 Excel 文档
  • 【算法】双指针
  • GIT ---- 解决【fatal: Authentication failed for】
  • 【案例89】达梦数据库优化器参数导致的SQL执行错误
  • 在Ubuntu20.04开发Dify插件教程,部署Dify插件脚手架
  • 深度学习 Deep Learning 第15章 表示学习
  • 针对 MySQL 数据库的详细说明,分类列出临时资源(临时表、游标、未提交事务、会话变量、预编译语句)的创建、清理方式及未清理后果,并以表格总结
  • [CH32] RISC-V汇编指令解释
  • linux下springboot项目守护进程编写
  • arm64平台下linux访问寄存器
  • Python----机器学习(线性回归:前向传播和损失函数)
  • 【C++基础知识】 C 预处理器中的 #line 指令详解
  • RabbitMQ应用2
  • Linux系统之SFTP-搭建SFTP服务器
  • ui-tars和omni-parser使用
  • JavaScript 模块化详解( CommonJS、AMD、CMD、ES6模块化)
  • 网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
  • 蓝桥杯 web 表格数据转化(组件挂载、模板字符串)
  • 【硬件视界9】网络硬件入门:从网卡到路由器
  • C# 扩展方法
  • 跨网连接vscode
  • 银联三级等保定级报告
  • CMake学习--Window下VSCode 中 CMake C++ 代码调试操作方法
  • 闭环SOTA!北航DiffAD:基于扩散模型实现端到端自动驾驶「多任务闭环统一」
  • 面基spring如何处理循环依赖问题
  • conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境
  • 机器学习、深度学习和神经网络
  • vscode调试python(transformers库的llama为例)
  • C#实现HiveQL建表语句中特殊数据类型的包裹