0

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

4

2 回答 2

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 文档页面

Dockerfile 参考

Docker 构建文档页面

于 2018-01-15T22:35:22.627 回答
1

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

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

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

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

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

关于 docker restart 从另一个容器的更多解释:

是否可以从另一个容器启动已停止的容器

于 2018-01-16T08:58:38.567 回答