正如我上面提到的,我想将一个可执行文件从一个 docker 复制到另一个 docker 并运行它。
docker cp target/demo.jar test:/demo.jar
不起作用,因为docker cp
只能复制“docker to host”或“host to docker”。
作为下一步,我需要从源 docker 本身运行可执行文件。有人可以帮我吗?
正如我上面提到的,我想将一个可执行文件从一个 docker 复制到另一个 docker 并运行它。
docker cp target/demo.jar test:/demo.jar
不起作用,因为docker cp
只能复制“docker to host”或“host to docker”。
作为下一步,我需要从源 docker 本身运行可执行文件。有人可以帮我吗?
长话短说:你不这样做。可以在运行时将文件复制到容器本身,但不建议这样做。这将改变容器状态,这意味着它不能轻易地用新实例替换,因为它们会有所不同。
根据评论,我可以看到您使用该openjdk
图像。此映像只是一个基本映像,因此它没有正在运行的进程。因此,它会在尝试裸机运行后立即停止。这意味着您必须Dockerfile
基于该容器创建一个并扩展它以运行您的流程。
如果您有一个不易更改的固定文件,您可以将其复制到与您相同的目录中,Dockerfile
并使用COPY
orADD
指令使其在图像中可用。这意味着您需要在每次对 JAR 文件进行更改时重新创建图像。
另一方面,如果您有一个正在更改的文件并且您不想继续重新创建映像,请尝试进行挂载情况。这有它自己的缺点,但它会允许容器的每个新实例都使用所述文件的最新版本。
请注意:当您创建图像并运行容器时,它可能会在执行后退出。这是由于 docker 容器的性质,其中最后一个(或主)进程可以是无限的(如网络服务器)或有限的(如脚本)。