【问题标题】:FTP file into docker container on remote serverFTP 文件到远程服务器上的 docker 容器中
【发布时间】:2018-02-24 22:32:11
【问题描述】:

如何使用 FTP 客户端将传输文件传输到在远程 Ubuntu 服务器上运行的 Docker 容器中?我可以通过 SSH 连接到服务器并使用 docker cp,它工作正常。但是我有一个客户需要能够使用 FileZilla 之类的东西来做到这一点。这可能吗?

【问题讨论】:

    标签: docker ftp transfer filezilla docker-container


    【解决方案1】:

    您不应将文件传输到正在运行的容器映像中。 这是一个非常糟糕的主意。

    容器总是来来去去,大多数容器编排器会自动重启容器,因此您上传的文件将在容器从其原始映像干净地重新启动时被擦除。

    最佳实践:每次您需要对容器内运行的生产应用程序进行更改时,重新构建并重新部署容器映像。

    如果您需要测试目的: Docker 容器不会公开 FTP 服务器,因为容器应该只运行 1 个进程(即您的 ENTRYPOINT 应用程序)。但是,您可以使用docker cp 之类的命令将文件从/复制到正在运行的容器中。

    【讨论】:

    • 我同意容器波动的观点,但我会尝试不同的方法。我会用主机映射一个卷并创建一个指向主机映射目录的单个 FTP 用户。
    【解决方案2】:

    我不是 docker 专家,但你可以试试这个:

    您可以在运行容器时公开多个端口。 所以,你也可以暴露 FTP 端口,像这样。

    docker run --name containername -p 3000:80 -p 3001:21 -d dockerimagename
    

    在这个使用-p 3001:21 的示例中,您将容器的端口 21 暴露给服务器的端口 3001,因此您可以使用 filezilla 输入服务器的 ip 作为主机,并将 3001 作为端口。

    【讨论】:

    • 如果有人可以使用,您提供的默认用户名和密码是什么?我无法连接到 Windows nanoserver 容器。