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訪問