无题 Feng Shao Hua 2025-02-07 2025-02-07 Docker部署FTP、SFTP和NFS服务步骤 1. FTP服务部署
创建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"]
创建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 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服务部署
创建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"]
创建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 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服务端部署
创建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"]
创建exports配置文件:
1 /nfsshare *(rw,sync,no_subtree_check,no_root_squash)
构建并运行容器:
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客户端部署
创建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 2 docker build -t my-nfs-client . docker run -d --name nfs-client --privileged --link nfs-server my-nfs-client
注意: 确保在运行NFS客户端容器之前,NFS服务器容器已经启动并运行。
使用说明
FTP服务: 使用FTP客户端连接到 localhost:21,匿名登录。
SFTP服务: 使用SFTP客户端连接到 localhost:2222,用户名 sftpuser,密码 password。
NFS: NFS客户端容器已经挂载了NFS共享,可以在客户端容器中访问 /mnt/nfs 目录。
请注意调整所有命令中的路径和端口,以适应您的具体环境和需求。在生产环境中,还需要考虑安全性,如更改默认密码、限制访问等。