Невозможно попасть в пространство имен контейнера с помощью 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, докер версии 20.10.6, и, как вы заметили, я запускаю свой контейнер из образа bash . Я не могу понять, почему не работает bash. Может кто-нибудь объяснить это?

1 ответ

То, что вы описали, действительно сработало для меня:

      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.

Другие вопросы по тегам