Не удается войти в Docker-контейнер на удаленном Linux-компьютере с процедурой, которая отлично работает на локальном компьютере?
Я настроил nsenter на свои локальные и удаленные Linux-боксы. Удаленная коробка - это размещенная виртуальная машина. Локальная коробка - это компьютер в моем офисе. Оба работают под управлением Ubuntu 12.0.4 LTS версии сервера, и у них обоих есть исправление ядра для поддержки докера. Мой локальный компьютер работает под управлением Docker 1.0.1, версии apt-get для Docker. Удаленная коробка работает 1.4.1, самая последняя и самая лучшая.
Вот процедура, которую я использую для выполнения nsenter на обеих машинах, показанная с подробной информацией об удаленной машине:
kelpmaster@external:~$ sudo docker inspect --format {{.State.Pid}} fluffy_cinnamon
32113
kelpmaster@external:~$ sudo nsenter --target 32113 --mount --ipc --net --pid
nsenter: cannot open /proc/32113/ns/pid: No such file or directory
Я проверил список процессов на удаленном блоке, и 32113 определенно находится в списке процессов. Я проверил структуру файла и определенно есть каталог с именем / proc / 32113 / ns. Однако на моем удаленном компьютере файл / каталог с именем pid не существует в папке пространства имен процесса. На моей локальной коробке это так.
Почему файл / каталог pid отсутствует в моем удаленном ящике, когда он правильно создается на моем локальном ящике? Как я могу это исправить, чтобы я мог поместить свой контейнер Docker на удаленный ящик, как я могу на свой локальный ящик?
1 ответ
Используйте lxc-checkconfig, чтобы увидеть, является ли 'pid namespace: enabled' или его ядром.
Вы также можете найти Cgroup: enabled Cgroup namespace: enabled
если не смонтировать его соответствующим образом.