如何解决无法使用 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
我使用的是 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
解决方法
你所描述的实际上对我有用:
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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。