2017-01-13 3 views
2

У меня возникла ситуация, когда мне нужно управлять контейнером докеров (я буду ссылаться на них как на контейнеры-работники) из одного конкретного контейнера (я буду ссылаться на него как на менеджера контейнер). Для этого я установил docker на контейнер менеджера (докер внутри докера) и прикреплен к рабочему контейнеру. Как только я закончил, мне нужно отсоединиться от рабочего контейнера и, возможно, подключиться к другому рабочему контейнеру или выполнить другие операции с контейнером менеджера. Остановка контейнера рабочего или менеджера не является вариантом.Как отсоединиться от контейнера докера, работающего в другом контейнере

Нажатие на Ctrl-p, Ctrl-q возвращает меня к хосту, а не к контейнеру менеджера. Если я присоединяюсь к контейнеру менеджера, я вижу, что я все еще подключен к контейнеру, который я управлял. Ответы на аналогичные должности предлагают Ctrl-p, Ctrl-p, Ctrl-q, но это тоже не работает.

Есть ли другой способ отсоединиться от контейнера вместо использования вышеупомянутой комбинации клавиш? Я запускаю docker на Ubuntu, контейнер-менеджер также работает на Ubuntu, но рабочие контейнеры могут быть почти что угодно.

+0

Если вы включили стенограмму о том, как вы начинаете контейнеры, ответы и т. Д., Было бы легче увидеть, что происходит. – Bryan

ответ

0

Итак, после нескольких дней поиска ответа я узнал ответ, поэтому я делюсь им, если кто-то другой столкнется с тем же вопросом.

Так что, если вы хотите запустить контейнер в контейнере вы должны не использовать:

docker attach container1 
docker attach container2 

Видимо, это не правильный способ крепления контейнера к контейнеру. Следовательно, нет способа отделиться от контейнера2, не убивая его.

Вместо этого вы должны использовать:

docker attach container1 
docker exec -i -t container2 bash 

Для выхода из типа container2 exit. Вы вернетесь к континууму1, а container2 будет продолжать работать в фоновом режиме. Нажатие Ctrl+p, Ctrl+q приведет вас к хозяину с контейнером2, все еще «прикрепленным» к контейнеру1.

+0

'docker exec' довольно отличается от' docker attach' - он запускает новый процесс в тех же пространствах имен. Также нет опции '-it' для' docker attach'. – Bryan

+0

@ Bryan Да, я понял, что они совершенно разные. Tnx для указания «-it» опечатки. Это то, что происходит, когда вы делаете 3 вещи одновременно :) – Jasko

+0

'docker exec -it alice sh' работает для меня! Затем вы можете выйти из контейнера 'alice' с командой' exit', и вы попадете в контейнер 'bob', не убивая ни один из контейнеров. – mbigras

Смежные вопросы