【问题标题】:How to exec into Docker container with ENTRYPOINT in its Dockerfile如何在 Dockerfile 中使用 ENTRYPOINT 执行 Docker 容器
【发布时间】:2019-11-18 15:31:52
【问题描述】:

我有一个如下所示的 Dockerfile:

FROM image

WORKDIR /App
ADD ./App/ /App
ENTRYPOINT [ "./App" ]

在 App 方向,我正在安装一个 golang 二进制文件及其 config.yml。

图像构建并正确运行。当我不运行分离的容器时,我可以看到应用程序也在运行。

但是当我分离运行它时:

docker run -d image

之后我无法执行到容器中:

docker exec -it container bin/bash

带有错误消息:

OCI 运行时执行失败:执行失败:container_linux.go:345:正在启动 容器进程导致 "exec:\"bin/bash\": stat bin/bash: no such 文件或目录”:未知

我可以理解这与我设置的入口点有关,但我不确定我可以使用什么替代方案。

有什么想法吗?

【问题讨论】:

  • docker exec -it container bash 或 docker exec -it container /bin/bash
  • 我使用 /bin/bash。有那么不一样吗?
  • 不,你使用 bin/bash
  • 是的,你是对的。谢谢!

标签: docker go dockerfile


【解决方案1】:

您应该指定二进制文件的完整路径(在您的情况下为/bin/bash),或者只指定位于容器的 PATH 变量中某处的二进制文件的名称(bash

【讨论】:

  • 不一定要指定完整路径,但需要指定正确的路径。如果您的工作目录是/App,则路径bin/bash 指的是/App/bin/bash,这当然不存在。但是正确的相对路径../bin/bash 也可以。也许也可以看看stackoverflow.com/questions/31435921/difference-between-and
  • 是的,你说得对,这是第三个选项 - 与 workdir 位置相关的路径,我忘记了这个,谢谢你的澄清
猜你喜欢
  • 1970-01-01
  • 2019-11-16
  • 2017-05-21
  • 1970-01-01
  • 2019-09-27
  • 2022-10-04
  • 1970-01-01
  • 2022-01-09
  • 2023-04-01
相关资源
最近更新 更多