在一个终端中,我有一个正在运行的容器
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
我在 Centos 7,docker 版本 20.10.6 上,正如您所注意到的,我正在从bash image运行我的容器。我不明白为什么 bash 不起作用。有人可以解释一下吗?
更新
只是提供一点背景。我将我的 Centos 作为 Vagrant VM 运行。我曾经vagrant ssh
连接到两个终端。
流浪文件
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provider "hyperv"
end