无题

Docker部署FTP、SFTP和NFS服务步骤

1. FTP服务部署

  1. 创建Dockerfile:
1
2
3
4
5
FROM alpine:latest
RUN apk add --no-cache vsftpd
COPY vsftpd.conf /etc/vsftpd/vsftpd.conf
EXPOSE 21 21100-21110
CMD ["vsftpd", "/etc/vsftpd/vsftpd.conf"]
  1. 创建vsftpd.conf配置文件:
1
2
3
4
5
6
7
8
9
10
listen=YES
anonymous_enable=YES
anon_root=/ftp/public
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
pasv_enable=YES
pasv_min_port=21100
pasv_max_port=21110
  1. 构建并运行容器:
1
2
docker build -t my-ftp-server .
docker run -d --name ftp-server -p 21:21 -p 21100-21110:21100-21110 -v /path/to/ftp/data:/ftp/public my-ftp-server

2. SFTP服务部署

  1. 创建Dockerfile:
1
2
3
4
5
6
7
8
9
FROM alpine:latest
RUN apk add --no-cache openssh
RUN ssh-keygen -A
RUN adduser -D sftpuser
RUN echo "sftpuser:password" | chpasswd
RUN mkdir -p /home/sftpuser/upload && chown sftpuser:sftpuser /home/sftpuser/upload
COPY sshd_config /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
  1. 创建sshd_config配置文件:
1
2
3
4
5
6
7
8
9
Port 22
PermitRootLogin no
PasswordAuthentication yes
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
  1. 构建并运行容器:
1
2
docker build -t my-sftp-server .
docker run -d --name sftp-server -p 2222:22 -v /path/to/sftp/data:/home/sftpuser/upload my-sftp-server

3. NFS服务端部署

  1. 创建Dockerfile:
1
2
3
4
5
6
FROM alpine:latest
RUN apk add --no-cache nfs-utils
RUN mkdir -p /nfsshare
COPY exports /etc/exports
EXPOSE 2049
CMD ["sh", "-c", "exportfs -r && rpcbind -f & rpc.nfsd -N 4 -N 3 & rpc.mountd -F"]
  1. 创建exports配置文件:
1
/nfsshare *(rw,sync,no_subtree_check,no_root_squash)
  1. 构建并运行容器:
1
2
docker build -t my-nfs-server .
docker run -d --name nfs-server --privileged -p 2049:2049 -v /path/to/nfs/data:/nfsshare my-nfs-server

4. NFS客户端部署

  1. 创建Dockerfile:
1
2
3
4
FROM alpine:latest
RUN apk add --no-cache nfs-utils
RUN mkdir -p /mnt/nfs
CMD ["sh", "-c", "mount -t nfs nfs-server:/nfsshare /mnt/nfs && tail -f /dev/null"]
  1. 构建并运行容器:
1
2
docker build -t my-nfs-client .
docker run -d --name nfs-client --privileged --link nfs-server my-nfs-client

注意: 确保在运行NFS客户端容器之前,NFS服务器容器已经启动并运行。

使用说明

  1. FTP服务: 使用FTP客户端连接到 localhost:21,匿名登录。
  2. SFTP服务: 使用SFTP客户端连接到 localhost:2222,用户名 sftpuser,密码 password。
  3. NFS: NFS客户端容器已经挂载了NFS共享,可以在客户端容器中访问 /mnt/nfs 目录。

请注意调整所有命令中的路径和端口,以适应您的具体环境和需求。在生产环境中,还需要考虑安全性,如更改默认密码、限制访问等。