【问题标题】:Docker run /bin/bash码头工人运行 /bin/bash
【发布时间】:2020-08-19 09:24:34
【问题描述】:

当我执行命令时,会出现这个错误

docker run -it --entrypoint=/bin/bash ld_mmdet:2.4.0 /bin/bash
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory".

然后我检查图像,发现 cmd 为空,像这样

 "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },

那么,有什么办法可以解决这个问题吗? 我尝试了以下方法:

  • 使用 /bin/sh 或 /bash 代替 /bin bash,不工作
  • 使用 docker run -it --entrypoint=/bin/bash ld_mmdet:2.4.0 /bin/bash,不工作

【问题讨论】:

  • 你有使用 --entrypoint 的理由吗?你用的是什么图片?
  • 图片ld_mmdet:2.4.0里面有/bin/bash吗?如果不知道这个图像是如何构建的,那就无能为力了。

标签: docker docker-run


【解决方案1】:

首先,一个好的做法是以分离模式启动 docker,然后使用docker exec -it 访问它,例如。

其次,您需要指定一个未完成的入口点或命令。

除非您添加诸如sleep infinity 或类似的参数,否则所有/bin/bash/bin/sh 命令都会完成。我建议您执行tail -F /dev/null,然后使用您的 bash 或 sh 访问 docker。

docker run -d --name mymmdet ld_mmdet:2.4.0 tail -F /dev/null
docker exec -ti mymmdet bash

您可以在 docker run 命令之后验证您的 docker 是否正在使用 docker ps -a 运行,如果已启动,则使用 docker exec

【讨论】:

  • 在终端 (-it) 中以交互模式运行 bash 未完成。这里的问题(除了使用与入口点和命令相同的二进制文件很奇怪......)是 bash 没有安装在图像中,或者至少没有安装在 OP 使用的路径中。解决这个问题需要知道他使用的基础镜像是什么(这就是为什么我因为缺乏调试信息而投票关闭的原因)。
  • (我认为docker run --rm -it imagename sh得到一个带有调试shell的临时容器没有什么问题。)
  • @Zeitounator,我并不是说-it 完成了。 bash 作为命令或入口点,如果您分离启动它。
  • 如果您只想运行 bash,则无需分离。如果您分离一个永无止境的命令并稍后尝试在容器上执行一个不存在的 bash(如果它最终正确启动......),问题仍然存在。在这种情况下,它只引入了复杂性 IMO,根本没有解决 OP 的问题。
  • 我不同意这在所有情况下都是一个好习惯。如果您只需要运行 bash 或单个命令,它甚至可能是一个糟糕的命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多