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

Podman容器启动时CMD传递环境变量未定义问题

问题原因与解决方法

问题根源

你当前的Dockerfile中CMD的写法存在错误:

FROM alpine:latest
CMD ["sh", "-c", "echo", "$VAR"]

使用数组格式的CMD时,sh -c仅会将第三个元素echo作为要执行的命令,第四个元素$VAR会被当作sh进程的位置参数$0,而非环境变量解析。因为sh -c的语法规则是sh -c '执行命令' [参数0 参数1 ...],后续参数不会直接参与命令的变量展开。

修复方案

有两种可行的修改方式:

  1. 合并命令字符串
    将echo $VAR作为一个整体传给sh -c,让shell解析整个命令时展开环境变量:
FROM alpine:latest
CMD ["sh", "-c", "echo $VAR"]
  1. 使用Shell格式CMD
    直接采用非数组的Shell格式CMD,容器会自动用sh -c包裹执行,变量能正常展开:
FROM alpine:latest
CMD echo $VAR

修改后重新构建镜像,执行podman run -e VAR=0 minimal-image即可得到预期输出0。

内容的提问来源于stack exchange,提问作者raywib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:27:42