在一个码头,我有一个正在运行的集装箱。
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上,码头版本20.10.6,正如您注意到的,我正在从巴什图像运行我的容器。我不明白为什么bash不起作用。有人能解释一下吗?
更新
只是提供了一些背景资料。我正在以Vagrant的形式运行Centos。我用vagrant ssh连接两个终端。
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provider "hyperv"
end发布于 2021-05-25 21:31:21
你所描述的其实对我有用:
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在这里,我找到了你描述的PID,使用docker inspect --format {{.State.Pid}} CONTAINERID。
https://stackoverflow.com/questions/67694484
复制相似问题