• 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 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

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

  • 相关阅读:
    何谓B/S架构,C/S架构,SOA架构?
    Android牟利之道广告平台的介绍
    软件开发工具介绍
    jQuery Mobile 入门教程
    程序员的编辑器——VIM
    优秀程序员值得借鉴的一些信息
    程序员必备利器——敏捷软件
    PhoneGap Build的使用
    PhoneGap简单介绍
    ceph16.2.6 cephfs mds源码阅读
  • 原文地址:https://www.cnblogs.com/regit/p/8512537.html
Copyright © 2020-2023  润新知