使用Docker快速搭建sftp服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Docker快速搭建sftp服务相关的知识,希望对你有一定的参考价值。

环境:

    docker环境

    如果是centos7系统,没有安装docker,直接使用以下命令安装

yum -y install docker
systemctl start docker.service

 镜像拉取:

    PS:不拉取也可以,在docker run的时候检测到没有镜像会自动拉取

docker pull docker.io/atmoz/sftp

最简单的使用docker搭建sftp实例:

docker run -p 22:22 -d atmoz/sftp foo:pass:::upload

    执行以上命令后,会在容器里面创建foo用户,密码为pass,此时登录sftp服务器后,可以看到upload文件夹,上传的文件会保存到容器里面的/home/foo/upload目录里面。

    通过以上命令构建的sftp容器,用户上传的文件是存放在容器里面的,如果容器被误删除,那么文件也将会丢失,通过下面的方式,可以把本地的文件系统,共享到容器内,这样上传的文件就会在主机上就能看到的到了。就算容器被删除,上传的文件也不会丢失。

共享本地目录到容器

docker run     -v /host/upload:/home/foo/upload     -p 2222:22 -d atmoz/sftp     foo:pass:1001
    -------------------------我是分割线------------------------------------
    OpenSSH服务器默认在端口22上运行,在本例中,我们将容器的端口22转发到主机的端口2222
    要使用OpenSSH客户端登录,请运行:sftp -P 2222 foo @ <host-ip>

PS.1 如果本地不存在/host/uplaod会自动创建

PS.2 登录会看到upload文件夹,如果没有写入权限,将宿主机上的/host/upload文件夹授权777即可

PS.3 如果还是无法写入文件,请检查selinux是否关闭


  以上都是只在容器里面创建了foo这一个用户,如果有多个用户需要登录sftp,怎么办呢?请看下面的示例:

docker run     -v /host/users.conf:/etc/sftp/users.conf:ro     -v mySftpVolume:/home     -p 3333:22 -d atmoz/sftp

    PS.1 第一个-v将本地的/host/users.conf映射到容器的/etc/sftp/users.conf,并且在容器内为只读

    /host/users.conf文件内容如下:        

foo:123:1001:100
bar:abc:1002:100
baz:xyz:1003:100

   user:pass:uid:gid

 PS.2 第二个 -v将mySftpVolume映射到容器内的/home

 PS.3 登录后,写入文件会无法写入,需要把本地映射到容器的目录里面的用户名文件夹授权为777

    查看本地的哪个目录映射到容器使用

docker inspect CONTAINER_ID

    


本文出自 “小科” 博客,请务必保留此出处http://kexiaoke.blog.51cto.com/5530023/1980681

以上是关于使用Docker快速搭建sftp服务的主要内容,如果未能解决你的问题,请参考以下文章

搭建SFTP服务安全共享文件,实现在外远程访问「内网穿透」

sftp搭建配置

Springboot--ELK快速搭建

Docker快速搭建Node.js Express运行环境

Docker快速搭建Node.js Express运行环境

Docker快速搭建Node.js Express运行环境