使用Docker快速搭建sftp服务

1、安装docker环境html

  参见 http://www.cnblogs.com/rslai/p/8403350.htmllinux

2、从Docker Hub查找sftp镜像

docker search sftp

3、安装sftp - 经过端口转发访问

一、sftp上传文件目录在容器中nginx

docker run --name mysftp -p 2294:22 -d atmoz/sftp foo:pass:::upload
  • --name mysftp  容器名称
  • foo:pass:::upload  其中foo为用户名,pass为密码,upload为上传的文件会保存到容器里面的/home/foo/upload目录里面
  • -p 22:22  将宿主机的22端口映射到容器的22端口,这样方位宿主机的22端口则会转发到容器的22端口上
  • -d atmoz/sftp  使用dockup hub中的atmoz/sftp镜像建立容器

  经过以上命令构建的sftp容器,用户上传的文件会存放在容器里面中,若是容器删除,则上传文件将会丢失。docker

  查看sftp是否运行安全

docker ps -a # 查看全部已安装容器
docker ps # 查看运行这的容器

  此时就能够使用sftp客户端链接此sftp服务了bash

docker exec -it e22eb5da1095  /bin/bash # 进入docker容器,这里使用容器名称或CONTAINER ID均可

  这个nginx.conf则是上传的文件ui

  

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

  下面的方法能够把本地的文件系统,挂载到容器内,这样上传的文件就会在主机上看到。就算容器被删除了,上传的文件也不会丢失。spa

docker run --name mysftp20 -v /host/upload:/home/foo/upload --privileged=true -p 2222:22 -d atmoz/sftp foo:pass:1001
  • -v /host/upload:/home/foo/upload  其中冒号前边的是宿主机目录,后边的挂载到容器中的目录,若是本地目录/host/uplaod不存在会自动建立
  • --privileged=true  因为linux的selinux安全规则因此须要给容器加特权
  • 名字也换了一个由于name不能重复,端口也是重复了容器会启动不了

三、建立多用户sftp服务.net

  若是你想给sftp配置多个用户能够有两个方式,一、在容器中建立用户并指派权限,二、在宿主机上编写用户文件而后挂载到容器中

docker run --name mysftp30 -v /host/users.conf:/etc/sftp/users.conf:ro -v /home/sftp:/home  --privileged=true -p 3333: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文件

vi /host/users.conf

  内容以下

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

  其中 user:pass:uid:gid  用户名:密码:用户id:组id

  这里建立的用户目录默认组和用户都是root没有权限,须要手动修改一下。

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

#查看目录映射到容器
#docker inspect CONTAINER_ID
#docker inspect NAMES
docker inspect mysftp30

4、安装sftp - 直接ip访问

相关文章
相关标签/搜索