Podman构建Oracle镜像丢失基础镜像健康检查问题咨询
问题:Podman构建自定义Oracle镜像未继承基础镜像健康检查
我基于带健康检查的Oracle数据库镜像container-registry.oracle.com/database/express:21.3.0-xe构建自定义镜像时遇到问题:用Podman构建后,自定义镜像没继承基础镜像的健康检查。用podman history查看镜像能看到包含HEALTHCHECK的层,但基于该镜像创建容器后,Podman和Docker都不显示健康状态;而用Docker构建同一自定义镜像就能正常继承健康检查,原本以为Podman和Docker构建结果无差异,求解决方案。
相关podman history输出:
$ podman history bebfa0c3dc0f ID CREATED CREATED BY SIZE COMMENT bebfa0c3dc0f 44 hours ago /bin/sh -c #(nop) COPY dir:312dcb9c3445e73... 131 kB FROM my-image ... <missing> 9 months ago HEALTHCHECK &{["CMD-SHELL" "\"$ORACLE_BASE... 0 B buildkit.dockerfile.v0 ...
解决方案
- 禁用BuildKit构建:Oracle基础镜像采用BuildKit构建,Podman对其元数据的处理逻辑和Docker有差异。尝试用以下命令构建自定义镜像:
podman build --no-buildkit -t your-custom-image . - 手动声明健康检查:如果禁用BuildKit无效,直接在你的Dockerfile末尾添加和基础镜像一致的HEALTHCHECK指令。可从
podman history输出中补全完整命令,示例:HEALTHCHECK --interval=5m --timeout=3s \ CMD "$ORACLE_BASE/checkDBStatus.sh" >/dev/null || exit 1 - 升级Podman版本:部分旧版Podman存在BuildKit镜像元数据处理bug,升级到最新稳定版后再尝试构建。
内容的提问来源于stack exchange,提问作者xani
相关产品推荐
相关产品推荐

