pure-ftpd: 使用docker快速搭建ftp服务

前言:centos系统压根不需要ftp,因为ssh就可以用sftp连接,纯为了折腾而折腾一遍
pure-ftpd官方镜像:https://hub.docker.com/r/stilliard/pure-ftpd/

  • NTFS:准备ftp用户

[root@X61CentOS ~]# adduser ntfs
[root@X61CentOS ~]# passwd ntfs
[root@X61CentOS ~]# gpasswd -a ntfs docker
[root@X61CentOS ~]# sudo chmod +w /etc/sudoers;sudo vi /etc/sudoers;sudo chmod -w /etc/sudoers;
ntfs    ALL=(ALL)       ALL
ntfs ALL=(ALL) NOPASSWD: /usr/bin/docker,/usr/bin/docker-compose,/usr/bin/yum,/usr/bin/mkdir,/usr/bin/chmod,/usr/bin/mount,/usr/bin/umount,/usr/bin/chown
  • NTFS:准备专用目录

[ntfs@X61CentOS ~]$ sudo mkdir -p /www/syncRepos
[ntfs@X61CentOS ~]$ sudo chown -R ntfs /www/syncRepos
  • FTP:准备docker用到的目录

[ntfs@X61CentOS syncRepos]$ sudo mkdir /www/ftp
[ntfs@X61CentOS syncRepos]$ mkdir /www/ftp/app
[ntfs@X61CentOS syncRepos]$ mkdir /www/ftp/pure-ftpd
[ntfs@X61CentOS syncRepos]$ sudo chown -R ntfs /www/ftp
  • FTP:拉取image和编写docker-compose

[ntfs@X61CentOS syncRepos]$ sudo docker pull stilliard/pure-ftpd
Using default tag: latest
latest: Pulling from stilliard/pure-ftpd

[ntfs@X61CentOS root]$ cd /www/ftp/
[ntfs@X61CentOS ftp]$ ls
app  pure-ftpd
[ntfs@X61CentOS ftp]$ vi docker-compose.yml
ftp:
  container_name: "ftp"
  image: stilliard/pure-ftpd:latest
  #我安装的centos7.3使用volume映射后没有读写权限,加入这个参数可以解决
  #看资料是linux的selinux安全限制,有几种方式,我直接配在yml里声明解决
  privileged: true
  restart: unless-stopped
  volumes:
    - /www/ftp/ftpusers:/home/ftpusers
    - /www/syncRepos:/home/ftpusers/at
    - /www/ftp/pure-ftpd:/etc/pure-ftpd
  ports:
    - "21:21"
    - "30000-30200:30000-30200"
  environment:
    PUBLICHOST: 0.0.0.0
  • FTP: 启动服务

[ntfs@X61CentOS ftp]$ docker-compose up -d
  • FTP: 添加ftp用户

[ntfs@X61CentOS ftp]$ docker exec -it ftp /bin/bash
root@20f689ccb752:/# pure-pw useradd at -u ftpuser -d /home/ftpusers/at 
Password: 
Enter it again: 
root@20f689ccb752:/# pure-pw mkdb
root@20f689ccb752:/# exit
  • FTP:连接ftp验证成功

看起来似乎分分钟搞定,其实我踩了很多坑,看了很多的攻略资料,最后这是部署下来能够成功的总结。
新的收获:比如加入docker的用户组,selinux读写权限