sftp服务与ftp服务两者之间有什么差异,请百度安利!
sftp服务搭建:
一)sftp image获取
# docker pull docker.io/atmoz/sftp //也可不拉取,在执行docker run命令时会自动拉取
二)简单启动sftp实例
# docker run -p 22:22 -d imageXX test:passwd:::upload
a. 执行上述命令后,会创建一个sftp服务实例(container);
b. 进入container后,会看到自动创建了/home/test/upload目录,该upload目录即是该sftp的主目录,上传的文件即位于该目录内;
c. 执行上述命令后,会创建密码为passwd的test账号,用该账号即可访问使用sftp服务;
三)持久化上传的文件
采用第二小节命令生成的sftp实例,文件是放在container内的,如果不小心将container删除了,文件也随之消失。为了解决该问题,可以在创建container时,将container的sftp主目录映射至宿主机目录,如下:
# docker run -v /host/sharefolder:/home/test/upload -p 22:22 -d imageXX test:passwd:::upload
a. 通过上面命令即可将container主目录映射至宿主机/host/sharefolder目录,如果不存在,将会自行创建;
四)sftp远程登录
# sftp -P portNum user@sftpServerIP //sftp -P 22 [email protected]
五) 命令使用
a. 从sftp服务器上下载文件:
sftp>get serverFile localFolder // get /home/test/upload/index.php /home/test, 将远程服务器index.php下载至本机/home/test目录
b. 上传本地文件至服务器
sftp>put localFile serverFolder
ftp服务搭建:
一)ftp image获取 //建议拉取fauria/vsftpd,参考网址https://www.jianshu.com/p/e51fe1975c29
# docker pull fauria/vsftpd
二)实例化ftp服务
#docker run -d\
-v /my/data/directory:/home/vsftpd\ //home/vsftpd: docker容器ftp文件根目录,登录用户根目录为/home/vsftpd/username/
-v /var/log/vsftpd/: /var/log/vsftpd/\ //var/log/vsftpd: docker容器ftp存储日志目录
-p 2340:20 -p 2341:21\ //ftp的2个端口号做docker端口映射的时候请保持2个端口号相差1的特点
-p 21100-21110:21100-21110\ //docker端口映射至宿主机
-e FTP_USER=test\ //配置用户,默认是admin
-e FTP_PASS=123456\ //配置密码
-e PASV_MIN_PORT=21100\
-e PASV_MAX_PORT=21110 \ //PASV_MIN_PORT~ PASV_MAX_PORT给客服端提供下载服务随机端口号范围,默认21100-21110,docker端口映射请设置成一样
-e PASV_ADDRESS=192.168.222.220\ //当需要使用被动模式时必须设置,定义其他服务器访问本机使用的ip。关于主动/被动访问模式更多信息,请参考:https://www.cnblogs.com/xiaohh/p/4789813.html
-e LOG_STDOUT=1\ //是否开启日志,任意值开启
--name vsftpd --restart=always fauria/vsftpd
三)访问服务
a. web浏览器访问
ftp://test:123456@ip:port
b. FileZilla工具访问
工具下载地址: https://filezilla-project.org/
四)新增用户
a. 进入容器
# docker exec -i -t vsftpd/containerID bash
b. 为新用户创建根目录
# mkdir /home/vsftpd/zhang
c. 更改所属用户和组
# chown -R ftp:ftp /home/vsftpd(请别忘了这一句的执行,否者写文件的时候可能会存在没有权限问题)
d. 编辑用户文件,奇数配置用户名,偶数配置密码
vi /etc/vsftpd/virtual_users.txt
e. 将新增用户写入服务数据库
# /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
f. 重启实例生效配置
# exit
# docker restart vsftpd