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服务
docker sftp
原文:http://kexiaoke.blog.51cto.com/5530023/1980681
来源: http://www.bubuko.com/infodetail-2389211.html