如何在Docker容器的Dockerfile中使用入口点执行

如何在Docker容器的Dockerfile中使用入口点执行,docker,go,dockerfile,Docker,Go,Dockerfile,我有一个Dockerfile,看起来像这样: FROM image WORKDIR /App ADD ./App/ /App ENTRYPOINT [ "./App" ] 在应用程序方向,我安装了一个golang二进制文件及其config.yml 映像将正确构建和运行。当我没有运行容器时,我可以看到应用程序也在运行 但当我独立运行时: docker run -d image 在以下情况下,我无法执行到容器中: docker exec -it container bin/bash 将显示一

我有一个Dockerfile,看起来像这样:

FROM image

WORKDIR /App
ADD ./App/ /App
ENTRYPOINT [ "./App" ]
在应用程序方向,我安装了一个golang二进制文件及其config.yml

映像将正确构建和运行。当我没有运行容器时,我可以看到应用程序也在运行

但当我独立运行时:

docker run -d image
在以下情况下,我无法执行到容器中:

docker exec -it container bin/bash
将显示一条错误消息:

OCI运行时exec失败:exec失败:容器\u linux。转到:345:启动 容器进程导致“exec:\“bin/bash\”:stat bin/bash:没有这样的 文件或目录:未知

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


有什么想法吗?

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

docker exec-it container bash或docker exec-it container/bin/bashI use/bin/bash。有什么不同吗?不,你使用bin/bash是的,你是对的。谢谢!严格来说,没有必要指定完整路径,但需要指定正确的路径。如果您的工作目录是
/App
,那么路径
bin/bash
指的是
/App/bin/bash
,当然它并不存在。但是正确的相对路径
。/bin/bash
也可以工作。也许你也看到了是的,你是对的,这是第三种选择——与workdir位置相关的路径,我忘记了这一条,谢谢你的澄清