一些用户报告称,当在 macOS 和 Windows 上运行 podman build 命令时,有时会很慢。这是因为当 Podman 在这些操作系统上使用时,它实际上利用了一个远程客户端,通过 podman REST API 服务与 Linux 系统通信来运行容器。
build 命令使用所谓的上下文目录,通常这是您的项目目录,其中包含您的 Containerfile/Dockerfile。然而,由于实际的构建是在 Linux 系统上执行的,并且 build 允许您将文件或目录 ADD/COPY 到新镜像中,Podman 需要将完整的上下文目录复制到服务器。这是通过在客户端上打包目录并发送到服务器来完成的,服务器再解压并执行构建。当您的上下文目录很大时,这可能是一个昂贵的操作,并且严重依赖于底层硬件,即磁盘速度。
如何解决此问题
有两种可能的方法可以解决此问题
- 使用 .containerignore/.dockerignore 文件排除您不想复制到镜像中的文件/目录。
- 如果您使用 Podman 机器设置,您可以使用 `podman machine ssh` 命令进入 Linux 系统并在那里执行构建。这仅在上下文目录位于已挂载到机器中的卷上时才有效。默认情况下,$HOME 是挂载的,因此在大多数情况下应该有效。
留下回复