Docker安装FTP
为什么要用FTP
我请教了我们项目组的高级工程师,我问为什么要把视频文件存放到FTP服务器上。得到的回答如下
- 当前项目存放的文件大都是视频文件,基本上文件都超过1G。我们的Linux硬盘不够,所以得单独申请FTP服务器,目前容量是200T。
- 项目部署到多台服务器,或者说多实例的时候,需要有一个公用文件服务器,用于支持文件上传下载业务。
Docker安装FTP
首先执行如下命令将镜像下载到本地:
docker pull fauria/vsftpd
启动容器
docker run -d
-v /var/ftp:/home/vsftpd
-p 20:20 -p 21:21 -p 21100-21110:21100-21110
-e FTP_USER=test
-e FTP_PASS=test
-e PASV_ADDRESS=172.17.0.6
-e PASV_MIN_PORT=21100
-e PASV_MAX_PORT=21110
-e LOCAL_UMASK=022
--name vsftpd --restart=always fauria/vsftpd
下面这个是把上面的命令放在了同一行,便于复制
docker run -d -v /var/ftp:/home/vsftpd -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=test -e FTP_PASS=test -e PASV_ADDRESS=172.17.0.6 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e LOCAL_UMASK=022 --name vsftpd --restart=always fauria/vsftpd
参数说明:
- -e /var/ftp:/home/vsftpd :挂载映射 docker 容器 ftp 文件根目录(冒号前面是宿主机的目录,建议宿主机使用 /var 这样公共权限文件夹,如果使用类似 /home 这样的目录可能会造成客户端无法连接上服务器问题)
- -p:映射 docker 端口(冒号前面是宿主机的端口)
- -e FTP_USER=test -e FTP_PASS=test :设置默认的用户名密码(都为 test)
- -e PASV_ADDRESS:宿主机 ip,当需要使用被动模式时必须设置。
- -e PASV_MIN_PORT~ PASV_MAX_PORT:给客服端提供下载服务随机端口号范围,默认 21100-21110,与前面的 docker 端口映射设置成一样
vsftpd中的local_umask和anon_umask
mask是在linux中常见的一个东西,它其实是一个掩码。当然,也有umask这样一个命令,它是对用户建立的文件的默认属性的定义。该 定义为:
假设umask为022,则对于一个文件夹的话,它的默认属性为 777-022=755,这也就是我们平时建立文件夹的权限。而对于一般的文件的话,则是用 666-022=644.
umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限
umask = 022 时,新建的目录 权限是755,文件的权限是 644
umask = 077 时,新建的目录 权限是700,文件的权限时 600
vsftpd的local_umask和anon_umask借鉴了它
默认情况下vsftp上传之后文件的权限是600,目录权限是700
想要修改上传之后文件的权限,有两种情况
如果使用vsftp的是本地用户
则要修改配置文件中的 local_umask 的值
如果使用vsftp的是虚拟用户
则要修改配置文件中的 anon_umask 的值
这样FTP服务器就安装好了
如何访问
IE浏览器访问 ftp://test:test@172.17.0.6
物理磁盘在/var/ftp/test 文件夹下
可使用FileZilla工具连接FTP服务器
参考地址:
Docker | 搭建一个ftp服务器
Docker - 在容器中搭建运行FTP服务器(vsftpd)