1. 程式人生 > >使用Docker快速搭建sftp服務

使用Docker快速搭建sftp服務

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服務