You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker run执行tar归档管道至宿主机失败,docker exec却正常

问题原因分析

你的docker run命令执行失败的核心原因是Bitnami PostgreSQL镜像的ENTRYPOINT脚本拦截了你的tar命令,具体细节如下:

  • Bitnami官方镜像默认带有自定义的ENTRYPOINT启动脚本,当你执行docker run [镜像] tar ...时,实际上是把tar cf - -C /usr/lib/x86_64-linux-gnu .作为参数传递给了这个ENTRYPOINT脚本,而非直接在容器内执行tar命令。
  • 该ENTRYPOINT脚本会优先处理PostgreSQL的初始化启动逻辑,不会执行你传入的tar命令,导致输出的不是有效tar归档内容,而是脚本的日志或错误信息,因此宿主机的tar命令无法识别有效归档,抛出This does not look like a tar archive错误。
  • 而docker exec是在容器启动完成后(ENTRYPOINT脚本已执行完毕,容器处于运行状态)直接执行tar命令,绕过了ENTRYPOINT的参数处理逻辑,所以能正常生成并传输tar归档。
解决方法

如果要直接用docker run完成归档传输,需要覆盖镜像的ENTRYPOINT,让容器直接执行tar命令:

docker run --rm --entrypoint tar bitnami/postgresql:11.22.0-debian-11-r4 \
    cf - -C /usr/lib/x86_64-linux-gnu . | tar xf -

通过--entrypoint tar指定容器启动时直接执行tar命令,跳过原有的ENTRYPOINT脚本,即可正常生成tar归档并传输到宿主机解压。

内容的提问来源于stack exchange,提问作者Max N.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:33:16