如何将文件(从url)上传到Docker容器?

时间:2018-01-15 22:01:55

标签: rest docker copy dockerfile pocketmine

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

2 个答案:

答案 0 :(得分:1)

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

Dockerfile

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

然后运行docker build -t mycoolimage .

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

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

Docker cp docs page

Dockerfile reference

Docker build docs page

答案 1 :(得分:1)

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

rlist = range(5):
for index, value in enumerate(rlist):
    if index == 0:
        print value
    else:
        print value + rlist[index-1]

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

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

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

有关docker从另一个容器重启的更多解释:

Is it possible to start a stopped container from another container

相关问题