-3

正如我上面提到的,我想将一个可执行文件从一个 docker 复制到另一个 docker 并运行它

docker cp target/demo.jar test:/demo.jar

不起作用,因为docker cp只能复制“docker to host”或“host to docker”。

作为下一步,我需要从源 docker 本身运行可执行文件。有人可以帮我吗?

4

1 回答 1

1

长话短说:你不这样做。可以在运行时将文件复制到容器本身,但不建议这样做。这将改变容器状态,这意味着它不能轻易地用新实例替换,因为它们会有所不同。

根据评论,我可以看到您使用该openjdk图像。此映像只是一个基本映像,因此它没有正在运行的进程。因此,它会在尝试裸机运行后立即停止。这意味着您必须Dockerfile基于该容器创建一个并扩展它以运行您的流程。

如果您有一个不易更改的固定文件,您可以将其复制到与您相同的目录中,Dockerfile并使用COPYorADD指令使其在图像中可用。这意味着您需要在每次对 JAR 文件进行更改时重新创建图像。

另一方面,如果您有一个正在更改的文件并且您不想继续重新创建映像,请尝试进行挂载情况。这有它自己的缺点,但它会允许容器的每个新实例都使用所述文件的最新版本。

请注意:当您创建图像并运行容器时,它可能会在执行后退出。这是由于 docker 容器的性质,其中最后一个(或主)进程可以是无限的(如网络服务器)或有限的(如脚本)。

于 2021-10-05T11:08:31.153 回答