【问题标题】:How do you upload a file (from url) to a Docker container?如何将文件(从 url)上传到 Docker 容器?
【发布时间】:2018-01-15 22:01:54
【问题描述】:

如何使用 Docker 引擎 API 来停止容器,将文件(从 url)上传到容器中的路径,然后再次运行启动命令?我正在运行this image。目的是让 Minecraft 服务器从 url 上传插件并重新启动它。我已经看到了docker cp 命令,尽管最好能够从 RESTful API 中执行此操作。

【问题讨论】:

    标签: rest docker copy dockerfile pocketmine


    【解决方案1】:

    您可以使用 docker cp 将文件复制到正在运行的容器中,但我认为您真正想要做的是基于该其他镜像构建一个新镜像。

    Dockerfile

    FROM nathjeid/pocketmine-mp:latest
    ADD ./FileToCopy.txt /FolderToCopyTo
    

    然后运行docker build -t mycoolimage .

    结果:您现在有一个名为“mycoolimage”的 docker 映像,它与 nathjeid/pocketmine-mp 相同,加上您要添加的文件。

    如果您想从 url 而不是从本地文件系统获取文件,您可以在 Dockerfile 中使用 RUN 命令并使用 curl。如果图像上还没有curl,则需要安装它。

    Docker cp docs page

    Dockerfile reference

    Docker build docs page

    【讨论】:

      【解决方案2】:

      如果您想在正在运行的容器中执行此操作,请使用 docker cp。像这样的 shell 脚本应该可以工作:

      wget http://example.com/file.out
      docker cp file.out yourcontainer:/desired/path/file.out
      docker restart yourcontainer
      

      或者,您可以使用另一个容器(例如,名为 administrator)并与您的插件共享一个卷。另一个容器可以是将文件上传到共享卷的安静服务器(例如 python flask 或其他)。

      如果要启动,请从 administrator 容器中重新启动第一个容器,您必须运行 administrator 容器来共享 docker sock,如下所示:

      -v /var/run/docker.sock:/var/run/docker.sock
      

      更多关于 docker restart from another container 的解释:

      Is it possible to start a stopped container from another container

      【讨论】:

        猜你喜欢
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 2018-07-01
        • 2018-06-08
        相关资源
        最近更新 更多