无法使用bin/bash进入容器命名空间



在一个终端中,我有一个正在运行的容器

docker container run --rm -it bash

在另一个终端中,我想在与上面运行的容器相同的命名空间中运行bin/bash。为了实现这一点,我遵循了以下步骤:

获取正在运行的容器的PID

docker inspect --format {{.State.Pid}} 32d7a757bc05

假设PID为3386。当我运行时

sudo nsenter --target 3386 --mount --uts --ipc --net --pid bash

我收到这个错误

nsenter: failed to execute bash: No such file or directory

但是,如果我将bash更改为sh,如下所示,它可以工作

sudo nsenter --target 3386 --mount --uts --ipc --net --pid sh

我使用的是Centos7,docker版本20.10.6,正如您所注意到的,我正在从bash镜像运行我的容器。我不明白bash为什么不起作用。有人能解释一下吗?

更新

只是提供更多的背景信息。我正在运行我的Centos作为一个流浪虚拟机。我使用vagrant ssh连接到两个端子。

流浪文件

Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provider "hyperv"
end

您所描述的内容实际上对我有效:

sudo docker container run --rm -it bash

在第二个终端:

sudo nsenter --target 604861 --mount --uts --ipc --net --pid bash
bash-5.1# which bash
/usr/local/bin/bash

在那里,我使用docker inspect --format {{.State.Pid}} CONTAINERID按照您描述的方式找到了PID。

最新更新