Использование nsenter для доступа к сети Docker, к которой не подключены запущенные контейнеры

Все, что я читаю, использует PID контейнера, который использует эту сеть. К сожалению, контейнер умирает из-за проблем с сетью. Я хочу войти в пространство имен сети и запускать команды, а не запускать другой контейнер в этой сети.

Моя папка /var/run/docker/netns/ пуста. Но сеть является мостовой сетью, которая обнаруживается в docker network ls

1 ответ

Когда контейнер запускается, он получает свое собственное пространство имен сети, если он не запущен с --net=none или же --net=host, Это пространство имен удаляется после остановки контейнера. Таким образом, вы не сможете отлаживать все, что связано с сетью этого контейнера, когда он не работает.

Вам нужно проверить журналы контейнера, чтобы выяснить, почему контейнер вышел.

В любом случае, вот некоторые соответствующие примеры команд:

pid=`docker inspect -f '{{.State.Pid}}' $container_id`

mkdir -p /var/run/netns
rm -f /var/run/netns/$container_id
ln -sv /proc/$pid/ns/net /var/run/netns/$container_id
nsenter -m -t `pidof dockerd` nsenter --net=/var/run/docker/netns/4-4ef4272ac1 ip link
Другие вопросы по тегам