使用Docker快速搭建sftp服務


一、安裝docker環境

  參見 http://www.cnblogs.com/rslai/p/8403350.html

二、從Docker Hub查找sftp鏡像

docker search sftp

三、安裝sftp - 通過端口轉發訪問

1、sftp上傳文件目錄在容器中

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容器,用戶上傳的文件會存放在容器里面中,如果容器刪除,則上傳文件將會丟失。

  查看sftp是否運行

docker ps -a # 查看所有已安裝容器
docker ps # 查看運行這的容器

  此時就可以使用sftp客戶端連接此sftp服務了

docker exec -it e22eb5da1095  /bin/bash # 進入docker容器,這里使用容器名稱或CONTAINER ID都可

  這個nginx.conf則是上傳的文件

  

2、sftp上傳文件目錄在宿主機目錄

  下面的方法可以把本地的文件系統,掛載到容器內,這樣上傳的文件就會在主機上看到。就算容器被刪除了,上傳的文件也不會丟失。

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不能重復,端口也是重復了容器會啟動不了

3、創建多用戶sftp服務

  如果你想給sftp配置多個用戶可以有兩個方式,1、在容器中創建用戶並指派權限,2、在宿主機上編寫用戶文件然后掛載到容器中

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沒有權限,需要手動修改一下。

4、查看本地的哪個目錄映射到容器使用  

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

四、安裝sftp - 直接ip訪問

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM