无法连接到Docker容器。

4

我设置了两个Swarm Manager节点(mgr1和mgr2)。但是当我尝试连接到容器时,它会抛出一个错误消息。

[root@ip-10-3-2-24 ec2-user]# docker run --restart=unless-stopped -h mgr1 --name mgr1 -d -p 3375:2375 swarm manage --replication --advertise 10.3.2.24:3375 consul://10.3.2.24:8500/                

[root@ip-10-3-2-24 ec2-user]# docker exec -it mgr1 /bin/bash

RPC错误:代码=2描述=“OCI运行时错误:执行失败:exec:“/bin/bash”:stat / bin / bash:没有那个文件或目录”

这发生在两台服务器(mgr1、mgr2)上。我还在每个节点上运行consul容器,并能够连接到consul容器。


有点跑题,但是你不能使用 Docker 1.12.3 吗?因为这个版本可以使用 Swarm 模式,更容易设置。 - Paul Trehiou
1个回答

4
在容器中,可能没有可用的/bin/bash。您可以使用以下命令之一:sh

docker exec -it mgr1 sh
docker exec -it mgr1 /bin/sh
docker exec -it mgr1 bash
docker attach mgr1

更新:基于评论
busybox是一个非常轻量级的基于Linux的映像,其中一些完美地运行了上述命令。
bash $ sudo docker exec -it test1 bash
rpc error: code = 13 desc = invalid header field value "oci runtime error: exec failed: container_linux.go:247: starting container process caused \"exec: \\\"bash\\\": executable file not found in $PATH\"\n"
bash $ sudo docker exec -it test1 sh
/ # exit
bash $ sudo docker exec -it test1 /bin/sh
/ # exit
bash $ sudo docker attach test1
/ # exit
bash $ 

@code4geeks,这很奇怪。感谢您的尝试。最后一个,请检查一下这个:docker attach mgr1 - Rao
尝试了附加操作,但它挂起了,最后我不得不按下ctrl + c,杀死了容器 :( - code4geeks
是的,看起来通用的亚马逊镜像出了一些问题。我在另一个实例中也尝试了一下,发现了同样的问题。 #docker exec -it 80102440981a echo $SHELL rpc错误:代码=2 描述="oci运行时错误:执行失败:exec: "echo": 在$PATH中找不到可执行文件" - code4geeks
当您输入 docker exec mgr1 which sh 时,它会返回什么? - Rao
@code4geeks,非常感谢您的努力。busybox是非常轻量级的镜像,您可以在其中看到这些命令的实际操作(已更新答案)。 - Rao
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接