Docker 搭建 FTP
介绍
FTP(File Transfer Protocol),即文件传输协议,是一种用于在网络上进行文件传输的标准协议。在本文中,我们将使用 Docker 来搭建一个简单的 FTP 服务器,以便我们可以方便地在本地和远程之间传输文件。
准备工作
在开始之前,我们需要确保已经安装了 Docker。如果你还没有安装 Docker,请根据你的操作系统从 Docker 官网上下载并安装。
搭建 FTP 服务器
首先,我们需要创建一个名为 docker-ftp
的目录,并在其中创建一个名为 Dockerfile
的文件。在 Dockerfile
文件中,我们将定义构建 FTP 服务器镜像所需的步骤。
FROM stilliard/pure-ftpd
RUN echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
RUN echo "yes" > /etc/pure-ftpd/conf/VerboseLog
RUN echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
RUN echo "yes" > /etc/pure-ftpd/conf/UnixAuthentication
RUN echo "yes" > /etc/pure-ftpd/conf/ProhibitDotFilesWrite
在上述代码中,我们使用了 stilliard/pure-ftpd
镜像作为基础镜像,并在其基础上进行配置。我们设置了一些参数,如 ChrootEveryone
用于限制用户只能访问自己的目录,VerboseLog
用于输出详细的日志信息,NoAnonymous
禁止匿名访问等等。
接下来,我们需要构建镜像。在 docker-ftp
目录下打开终端,执行以下命令:
docker build -t my-ftp .
该命令将根据 Dockerfile
中的定义构建镜像,并将其命名为 my-ftp
。
现在,我们可以运行 FTP 服务器容器了。执行以下命令:
docker run -d -p 21:21 -p 30000-30009:30000-30009 --name my-ftp-container my-ftp
该命令将在后台运行一个名为 my-ftp-container
的容器,并将主机的 21 端口映射到容器的 21 端口,以及主机的 30000-30009 端口范围映射到容器的 30000-30009 端口范围(用于被动模式)。
连接 FTP 服务器
现在,我们可以使用 FTP 客户端连接到我们刚刚搭建的 FTP 服务器了。在终端中,执行以下命令:
ftp localhost 21
该命令将连接到本地主机的 21 端口(我们在上一步中将其映射到了容器内的 21 端口)。
在连接成功后,你可以使用 FTP 客户端提供的命令来进行文件的上传、下载和管理等操作。以下是一些常用的 FTP 命令:
ls
:列出当前目录下的文件和文件夹。cd
:切换到指定目录。get
:下载文件。put
:上传文件。mkdir
:创建目录。delete
:删除文件或目录。
配置匿名访问
如果你想允许匿名用户访问 FTP 服务器,并限制其只能读取文件而不能上传或删除文件,可以按照以下步骤进行配置。
首先,打开 docker-ftp
目录下的 Dockerfile
文件,将以下内容添加到文件末尾:
RUN echo "yes" > /etc/pure-ftpd/conf/NoAnonymousUpload
RUN echo "yes" > /etc/pure-ftpd/conf/AnonymousCanCreateDirs
RUN echo "no" > /etc/pure-ftpd/conf/AnonymousCantUpload
RUN echo "yes" > /etc/pure-ftpd/conf/AnonymousOnly
这些配置将禁止匿名用户上传文件,并允许其创建目录和只读访问。
接下来,重新构建镜像:
docker build -t my-ftp .
最后,停止并删除