【问题标题】:Cannot run command in Docker container无法在 Docker 容器中运行命令
【发布时间】:2019-05-05 10:48:24
【问题描述】:

我正在尝试通过

在名为“bind”的 docker 容器中执行 bash
docker exec -it bind bash

我收到以下错误消息:

rpc error: code = 2 desc = oci runtime error: exec failed: 
container_linux.go:247: starting container process caused "process_linux.go:110: 
decoding init error from pipe caused \"read parent: connection reset by peer\""

日志中没有什么特别之处。重新启动 docker 或容器似乎没有效果。我还确保硬盘驱动器上有足够的空间。在容器中启动任何其他二进制文件都会产生相同的错误。

版本信息:

docker --version:

Docker version 1.13.1, build 07f3374/1.13.1

操作系统:

cat /etc/redhat-release 

CentOS Linux release 7.6.1810 (Core) 

任何帮助将不胜感激。

【问题讨论】:

  • 里面有一个绑定,是的,有一个bash。尝试在内部运行任何命令(例如“sh”)会产生相同的结果。
  • 什么是基础镜像?
  • 请同时发布您用于启动容器的命令(docker run … 或docker-compose up …)

标签: docker centos redhat


【解决方案1】:

这是一个已知问题,已在较新的 docker 软件包中得到修复: https://bugzilla.redhat.com/show_bug.cgi?id=1655214

对于那些无法升级的问题,William Brown 在问题中提到了一种不需要降级的解决方法。

PID=docker inspect --format {{.State.Pid}} <name of container>
nsenter --target $PID --mount --uts --ipc --net --pid /bin/sh

希望这对你有用

【讨论】:

    【解决方案2】:

    如果你使用

    yum update
    

    之前也不知道老版本的docker是什么,直接运行就行了

    yum downgrade docker docker-client docker-common
    

    对我有用

    【讨论】:

      【解决方案3】:

      这似乎是最近更新 docker RPM 包时引入的错误。一个临时的解决方法是将所有 docker 包降级到以前的版本(75 似乎可以工作)。

      yum downgrade docker-1.13.1-75.git8633870.el7_5 \
                    docker-client-1.13.1-75.git8633870.el7_5 \
                    docker-common-1.13.1-75.git8633870.el7_5 \
                    docker-rhel-push-plugin-1.13.1-75.git8633870.el7_5
      

      【讨论】:

        【解决方案4】:

        这是关于 Red Hat 的 bugzilla 的错误报告:https://bugzilla.redhat.com/show_bug.cgi?id=1655214

        【讨论】:

          【解决方案5】:

          今天我安装了 docker 的更新(Centos 上的版本 1.13.1-84),从那以后我的所有容器也遇到了同样的问题。

          降级到版本 1.13.1-75 对我有用。

          【讨论】:

            【解决方案6】:

            "Connection reset by peer",一般发生在端口不匹配的情况下。就像您没有公开端口并尝试使用它,或者端口映射不正确。事实上,如果是服务a被绑定到本地主机,请检查它,因为如果你想托管一个服务,你可能想把它绑定到0.0.0.0

            此错误可能与很多问题有关。但是,主要是它与绑定错误的端口和错误的 IP 一致。

            【讨论】:

            • 绑定到0.0.0.0。被转发的唯一端口是 53 和 10000。容器内的绑定也可以正常工作。只是我不能 docker exec 进入容器。
            • 感谢Fang提供的信息,请告诉我命令是什么。理想情况下,应该是 docker exec -it "container_name" bash 。在这种情况下,您需要确保容器应该允许 bash。你能评论一下吗
            • 我今天也看到了同样的情况。只需在干净的 VM 上旋转香草 nginx。运行“docker exec test id”会产生相同的错误。我正在运行 Linux 3.10.0-693.el7.x86_64 和 Docker 1.13.1。
            【解决方案7】:

            我认为这是因为缺少权限。

            尝试使用 sudo 运行 docker,如下所示。

            sudo docker exec -it 绑定 bash

            希望这会有所帮助。

            【讨论】:

            • 不,不是这个原因。
            猜你喜欢
            • 1970-01-01
            • 2020-06-26
            • 2016-04-06
            • 1970-01-01
            • 2019-03-08
            • 2021-09-17
            • 2020-06-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多