【发布时间】:2018-01-05 17:34:20
【问题描述】:
Docker 在 Dockerfile 中运行命令的方式与在启动容器后手动运行命令的方式似乎有所不同。这似乎是由于您可以启动的 shell 类型,(我假设)带有 Dockerfile 的非交互式 shell 与运行 docker run -it <some-img-id> 之类的交互式 shell 相比。
如何调试 Docker 容器中正在运行的命令,使其运行方式与从 Dockerfile 中运行的命令完全一样?只需将/bin/bash --noprofile 添加到run cmd 就足够了吗?或者从 Dockerfile 启动时环境还有什么不同?
【问题讨论】:
-
对此没有通用的答案——我们需要查看您所询问的 specific 命令。 minimal reproducible example 向其他人展示如何自己看到差异也会有所帮助。
-
...像
COPY这样的命令完全在Docker 内部实现——它们根本不调用shell。RUN和 kin 有多种模式——如果你将文字参数列表作为数组传递,那么任何地方都没有 shell。
标签: bash shell docker dockerfile interactive