docker部署sftp
一. 按照我博客中搭建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 \n
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的更多相关文章
- docker 部署 flask(一)配置环境及测试
简介: flask也是要部署的.不能老在我们的pycharm里面跑测试服务器. 各种配置linux,我看就算了吧.我们用docker部署. 也就两三行命令. 一:选择基础镜像 GitHub repo: ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 程序开发使用docker部署
我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...
- 我使用celery以及docker部署遇到的问题
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...
- NET Core Docker部署
NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...
随机推荐
- 刷题向》一道逆向思维题(BZOJ1046)(NORMAL)
这道题对于一类题都有一个通用思路:反向递减序列即为正向字典序. 对于逆向思维的题还要多做才能培养这种对于逆向思维的感觉. 想到这种方法之后,就很简单了. 因为n×m不会炸,所以反向LIS叠一个贪心就能 ...
- 解剖Nginx·自动脚本篇(3)源码相关变量脚本 auto/sources
在configure脚本中,运行完auto/options和auto/init脚本后,接下来就运行auto/soures脚本.这个脚本是为编译做准备的. 目录 核心模块 事件模块 OpenSSL 模块 ...
- 从计算框架MapReduce看Hadoop1.0和2.0的区别
一.1.0版本 主要由两部分组成:编程模型和运行时环境. 编程模型为用户提供易用的编程接口,用户只需编写串行程序实现函数来实现一个分布式程序,其他如节点间的通信.节点失效,数据切分等,则由运行时环境完 ...
- GitHub 上的十一款热门开源安全工具
作为开源开发领域的基石,“所有漏洞皆属浅表”已经成为一条著名的原则甚至是信条.作为广为人知的Linus定律,当讨论开源模式在安全方面的优势时,开放代码能够提高项目漏洞检测效率的理论也被IT专业人士们所 ...
- ORACLE修改表空间方法
一.使用imp/exp.先导出源库,再创建新库把表空间创建好,然后再导入.(据说这样可以,前提是新的库里面不能有与源库相同名字的表空间.有待验证!) 二.使用脚本进行修改.据目前所了解,正长情况下需要 ...
- CentOS搭建VSFTP服务器
一.安装vsftpd 1.查看是否已经安装vsftpd 2.如果没有,就安装 3.测试是否安装成功 4.安装成功设置开机启动 二.配置vsftpd 1.修改配置文件/etc/vsftpd/vsftpd ...
- DOM0级与DOM2级
定义: 0级DOM 分为2个:一是在标签内写onclick事件 二是在JS写onlicke=function(){}函数 1) <input id="myButton" t ...
- C#中一个窗口是一个类呢,还是一个窗口类的实例呢?(转)
C#中一个窗口是一个类呢,还是一个窗口类的实例呢? 答: 没有一个人说到重点上. 一个窗口,它不是仅仅用一个类可以描述的: 首先,这个窗口的数据类型类型,是从Form类派生下来的,也就是说它的定义是一 ...
- Python爬虫入门四之Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
- sed高级用法:模式空间(pattern space)和保持空间(hold space)
摘自:https://blog.csdn.net/ITsenlin/article/details/21129405 sed高级用法:模式空间(pattern space)和保持空间(hold spa ...