docker安装sftp并实现文件上传

1、查询可用的docker镜像

docker search sftp

在这里插入图片描述一如既往选用官方自带的心情会很美!ლ(′◉❥◉`ლ)

2、拉取并启动服务

docker run --restart=always --name mysftp -p 2294:22 -d atmoz/sftp admin:admin:::upload

做个简单的解释:

  • –restart=always 总是重启
  • –name mysftp  容器名称
  • admin:admin:::upload  其中第一个admin为用户名,admin为密码,upload为上传的文件会保存到容器里面的/home/admin/upload目录里面
  • -p 2294:22  将宿主机的2294端口映射到容器的22端口,这样方位宿主机的2294端口则会转发到容器的22端口上
  • -d atmoz/sftp  使用dockup hub中的atmoz/sftp镜像创建容器

PS:请勿在生产环境使用此方式,因为这个并没有将docker容器映射到本地,如container丢失将失去所有文件

3、查看并使用sftp

docker ps | grep sftp

在这里插入图片描述 很明显已经启动成功了,下面用珍藏已久的SecureFX连接

在这里插入图片描述已经可以开心的上传下载文件了。

4、sftp上传文件目录在宿主机目录

docker run --name mysftp2 -v /host/upload:/home/admin/upload --privileged=true -p 2295:22 -d atmoz/sftp admin:admin:1001

  • -v /host/upload:/home/admin/upload  其中冒号前边的是宿主机目录,后边的挂载到容器中的目录,如果本地目录/host/uplaod不存在会自动创建
  • –privileged=true 由于linux的selinux安全规则所以需要给容器加特权
  • –name mysftp2 名字也换了一个因为name不能重复,端口也是重复了容器会启动不了

5、 创建多用户sftp服务

如果你想给sftp配置多个用户可以有两个方式:

  1. 在容器中创建用户并指派权限
  2. 在宿主机上编写用户文件然后挂载到容器中

第一种直接使用上面的就可以,下面的是第二种方式

docker run --name mysftp3 -v /host/users.conf:/etc/sftp/users.conf:ro -v /home/sftp:/home --privileged=true -p 2296:22 -d atmoz/sftp

  • -v /host/users.conf:/etc/sftp/users.conf:ro  将本地的/host/users.conf映射到容器的/etc/sftp/users.conf,并且在容器内为只读
  • -v /home/sftp:/home  将本地/home/sftp目录映射到容器/home下存放上传的文件

创建本地 /host/users.conf文件

vim /host/users.conf

xiaoming:123:1001:100
goudan:abc:1002:100
erzhu:xyz:1003:100

其中 user:pass:uid:gid  用户名:密码:用户id:组id
ps:这里创建的用户目录默认组和用户都是root没有权限,需要手动修改一下。

这样小组就可以开心使用了!

Docker可以用来搭建SFTP(Secure File Transfer Protocol)服务器,这样你可以通过安全的文件输协议在容器内部存储和访问文件。以下是使用Docker搭建SFTP服务器的一般步骤: 1. **选择SFTP服务器软件**: 使用一个支持SFTPDocker镜像,如`proftpd/proftpd`,它是一个开源的FTP服务器,也可以用于SFTP。 2. **拉取镜像**: 在Docker命令行中运行: ``` docker pull proftpd/proftpd ``` 3. **运行容器**: 创建一个Dockerfile,指定proftpd镜像,并配置必要的环境变量和端口映射,例如: ```Dockerfile FROM proftpd/proftpd:latest RUN apt-get update && apt-get install -y sasl2-bin COPY sftp.conf /etc/proftpd/conf.d/ CMD ["proftpd", "-f", "/etc/proftpd/proftpd.conf"] ``` 这里假设你已经有一个`sftp.conf`配置文件,其中包含了SFTP服务器的设置。 4. **启动和运行容器**: ``` docker build -t sftp-server . docker run -d --name sftp-server -p 2222:21 -v /path/to/your/data:/data sftp-server ``` `-d`表示后台运行,`-p`将主机的2222端口映射到容器的21端口(FTP默认端口),`-v`将宿主机的目录挂载到容器内的/data路径,这样用户就可以访问这个目录。 5. **配置SFTP用户**: 需要在`sftp.conf`或外部文件中创建用户并分配权限。 6. **验证连接**: 使用SSH客户端或者SFTP客户端(如FileZilla)连接到`localhost:2222`或你的服务器IP地址,使用在Docker运行时创建的用户名和密码尝试登录。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值