我有一个简单的 Dockerfile,它创建了一个 zip 文件,我正在尝试在它准备好后检索 zip 文件。我的 Dockerfile 看起来像这样:
FROM ubuntu
RUN apt-get update && apt-get install -y build-essentials gcc
ENTRYPOINT ["zip","-r","-9"]
CMD ["/lib64.zip", "/lib64"]
Run Code Online (Sandbox Code Playgroud)
阅读完文档后,我觉得这样的事情应该可以做到,但我无法让它发挥作用。
docker build -t ubuntu-libs .
docker run -d --name ubuntu-libs --mount source=$(pwd)/,target=/lib64.zip ubuntu-libs
Run Code Online (Sandbox Code Playgroud)
另一个问题:是否可以从命令行重命名 zip 文件?
这与评论中提到的重复问题不同,因为当他们使用cp从正在运行的 Docker 容器复制文件时,我试图在实例化时挂载一个目录。
从事项目的团队将 Docker 映像部署到云运行服务。我没有 docker 映像,但可以访问 Cloud Run 服务。我可以看到日志和详细信息。我想找到该 docker 映像中的文件。我怎样才能访问这个?例如,图像包含一个 main.py 文件,现在我想访问它。
谢谢
我有一个Dockerfile,其中我首先在一个层中编译Mosquitto服务器,然后使用COPY将身份验证插件的源文件复制到映像中,最后运行该插件的编译。
总而言之,生成的图像很适合在容器中使用,然后容器中装有该插件运行的Mosquitto服务器。
我想修改此插件并通过重新运行Dockerfile的构建来重新编译它。由于第一层未修改,因此它仅复制修改后的文件并再次运行编译。
我现在要做的是从新映像中提取插件(.so文件),并将其移动到主机上的挂载目录,这样,当前正在运行的Mosquitto服务器将只需要重新启动即可。
是否可以反向使用COPY命令,以便将编译后的插件复制到指定的主机目录,以便随后删除新创建的映像?
还是这完全是一种不好的做法?我是否应该更好地执行到正在运行的容器中并让其重新构建插件(这将使我只能在运行服务器的计算机上构建插件)?