无法在 Docker 容器中执行 运行 命令

Cannot run command in Docker container

我正在尝试通过

在名为 "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 或容器似乎没有效果。我还确保硬盘上有足够的 space。在容器中启动任何其他二进制文件都会产生相同的错误。

版本信息:

docker --version:

Docker version 1.13.1, build 07f3374/1.13.1

OS:

cat /etc/redhat-release 

CentOS Linux release 7.6.1810 (Core) 

如有任何帮助,我们将不胜感激。

我认为这是因为权限不足。

尝试 运行 docker 像下面这样使用 sudo。

sudo docker exec -it bind bash

希望对您有所帮助。

"Connection reset by peer",一般出现在端口有一定不匹配的情况下。就像您没有公开端口并试图使用它,或者不正确的端口映射。事实上,如果它是绑定到 localhost 的服务,请检查它,因为如果你想托管服务,你可能想将它绑定到 0.0.0.0

这个错误可能涉及很多问题。但主要是,它与绑定错误的端口和错误的 IP 一致。

这似乎是 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

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

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

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

如果你使用

yum update

之前,不知道 docker 的旧版本是什么,只是 运行

yum downgrade docker docker-client docker-common

对我有用

这是一个已知问题,已在较新的 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

希望这对你有用