环境:
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
时间: 2024-10-10 21:09:21