docker部署sftp

摘要:
I根据我的博客中构建sftp的方法创建Docker镜像的方法是可用的,但它不是最好的,需要改进。

一. 按照我博客中搭建sftp的方法做一个docker镜像

这种方法可用,但不是最好的,待改进。可参照另一篇博客:设置多用户不同权限的sftp服务器搭建

1. dockerfile文件如下,当前目录假定为sftp_docker

 

复制代码
FROM ubuntu:14.04
ADD ./source.list /etc/apt/sources.list   #这个是阿里云的源文件,放置在当前目录下

#设置ssh,使容器可SSH连接,经测试下面的2步都是必须的,否则会出错,虽然不太清楚为什么... RUN apt-get update RUN apt-get -y install openssh-server RUN mkdir /var/run/sshd RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
#下面的命令就是参照上面的文字说明一步步写了 RUN groupadd sftp RUN useradd -g sftp -s /bin/false mysftp RUN echo "mysftp:123" | chpasswd RUN mkdir -p /data/sftp/mysftp RUN usermod -d /data/sftp/mysftp mysftp ADD ./sshd_config /etc/ssh/sshd_config #配置文件见下段代码 RUN chown root:sftp /data/sftp/mysftp RUN chmod 755 /data/sftp/mysftp RUN mkdir /data/sftp/mysftp/upload RUN chown mysftp:sftp /data/sftp/mysftp/upload RUN chmod 755 /data/sftp/mysftp/upload EXPOSE 22

#这个CMD命令挺重要的,耗了点时间测试,没事再看看
CMD /usr/sbin/sshd -D
复制代码

 

2. 生成镜像文件,镜像名设置为sftp_test1

 

docker build -t sftp_test1

3. 其中上面代码中sshd_config配置文件如下

复制代码

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
UsePAM yes
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/mysftp
ForceCommand internal-sftp
AllowTcpForwarding no

复制代码

阿里云的ubuntu14的源文件如下

复制代码
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
复制代码

4. docker-compose 文件如下

sftp:
    image: sftp_test1
    volumes:
        - /data/sftp/mysftp/upload/:/data/sftp/mysftp/upload/
    ports:
        - "4004:22"

这里需要把本机的/data/sftp/mysftp/upload的权限改为777,这样才能进行在sftp容器中进行文件上传

5. 在docker-compose文件夹中执行docker-compose up -d启动sftp容器,然后sftp -P 4004 mysftp@127.0.0.1   密码为123连上,进入upload文件夹中即可进行文件上传了

二.  网上有一个别人做的sftp镜像,但是按照他的方法上传有点问题

链接为http://www.mamicode.com/info-detail-2084477.html

写成自己的docker-compose文件为

sftp:
  image: atmoz/sftp #冒号后面要后空格

  volumes:
    - /home/foo/test/:/home/foo/ #冒号前面不能有空格

   # - /home/foo1/test1/:/home/foo1 

  ports:
    - "2222:22"
  command: foo:pass:1002 (foo1:pass:1003 #可以有多个用户) 

 

解决方法如下

/home/foo/test文件夹授权755,在test目录下再新建一个文件夹,比如upload, 把需要上传的文件放置在upload中,并且修改upload权限为777

镜像作者的设定应该是把映射目录作为根目录(监狱),根目录是不能有写权限的,需要在下面再建一个子目录

免责声明:文章转载自《docker部署sftp》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python+selenium2自动化------quit()和close()区别理解浏览器历史记录(2)-hashchange、pushState下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

装ftp到lnmp

一、Pureftpd LNMP一键安装包里1.3及更高版本不需要MySQL支持,无图像界面没有http://ip/ftp/管理界面,只能使用命令lnmp ftp {add|del|edit}进行管理。1.2及以下版本Pureftpd安装脚本是需要MySQL支持的,安装前需要已经安装好LNMP,这个自带一个PHP编写的用户管理界面。 安装 进入lnmp解压后...

vsftp 500 OOPS: cannot change directory:/home/

登陆ftp时再输入用户名和密码出现:500 OOPS: cannot change directory:/home/********** 解决方法:在终端输入 setsebool ftpd_disable_trans 1 然后重启vsftp服务 service vsftpd restart 如果输入上述命令时出现:Could not change act...

Windows子系统配置,cmder配置, pycharm配置django开发环境

背景   以往,新手配置python的linux开发环境会遇到许多大坑。最近偶然接触到windows10子系统(Ubuntu),内存占用少,丝滑流畅,感觉十分便利,本地配置好pycharm及代码同步,也省去了安装虚拟机,双系统的麻烦,码代码和娱乐两不误,开发学习十分便利。但是windows的原生的cmd用起来感觉不便,不过搭配cmder替换cmd使用,如虎...

linux脚本:ftp自动传输文件

使用Shell脚本实现ftp的自动上传下载  http://liwenge.iteye.com/blog/566515 open 192.168.1.171 user guest 123456cd /home/data lcd /home/databackupserverip,username,passwd, remote_routine, loca...

Oxygen-Dapr.EshopSample 部署随记

 运行环境:Windows 10家庭中文版 版本号:1909 一、下载并安装docker desktop for windows 下载:https://www.docker.com/products/docker-desktop 安装要求: 安装WSL2: https://docs.microsoft.com/zh-cn/windows/wsl/insta...

Cygwin 安装列表

Cygwin 在首次安装的时候,为了不用等的太久,所有程序都在 Default 状态下安装的。 安装完之后,还需要安装以下常用的程序。使用 Default 模式安装,这些程序是不会安装进去的。 ======================安装的程序: rsync expect mmv ssh dos2unix zip ===================...