Как отсоединиться от контейнера Docker, не останавливая его – CloudSavvy IT
Контейнеры Docker имеют интерактивный режим, который позволяет вам присоединять потоки ввода и вывода вашего терминала к процессу контейнера. Нажатие Ctrl-C обычно прерывает это
процесс, в результате чего контейнер остановится. Здесь можно отключиться от сеанса, не останавливая контейнер.
Искусственный интеллект поможет тебе заработать!
Отсоединение без остановки
Docker поддерживает комбинацию клавиш для изящного отсоединения от контейнера. Нажмите Ctrl-P, а затем Ctrl-Q, чтобы отключить соединение.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Вы вернетесь в свою оболочку, но ранее присоединенный процесс останется живым, поддерживая работу вашего контейнера. Вы можете проверить это, используя docker ps, чтобы получить список запущенных контейнеров.
Нажатие Ctrl-C или запуск команды выхода обычно завершает процесс переднего плана контейнера, если он не был специально настроен. Контейнер Docker должен иметь работающий процесс переднего плана; контейнер без него перейдет в остановленное состояние.
Изменение последовательности отсоединения клавиатуры
Вы можете изменить последовательность отсоединения в соответствии с вашими предпочтениями или избежать конфликта с сочетаниями клавиш, используемыми вашим приложением. Добавьте свойство detachKeys в файл ~ / .docker / config.json, чтобы указать ключи, которые вы хотите использовать.
Docker поддерживает символы az и символы @, ^ и _, а также знак левой квадратной скобки ([)идвеобратныекосыечерты(\)ВсеонииспользуютсявместесклавишейCtrl;буквытакжеможноиспользоватьиндивидуальнобезCtrl[)andtwobackslashes()TheseareallusedinconjunctionwiththeCtrl-key;lettersmayalsobeusedindividuallywithoutCtrl
Последовательности клавиш представлены в виде списка, разделенного запятыми:
{“detachKeys”: “Ctrl-d, d”}
В этом примере происходит отсоединение от контейнера, когда вы сразу же нажимаете Ctrl-D, за которым следует клавиша d.
Изменение последовательности для каждого контейнера
Помимо изменения вашей глобальной конфигурации, Docker принимает переопределения detachKeys для каждого контейнера и каждого вложения. Добавьте флаг –detach-keys к командам, которые могут присоединяться к процессам контейнера, чтобы установить определенную последовательность.
Команды, которые это поддерживают:
- докер запустить
- докер старт
- docker exec
- докер прикрепить
Вот как присоединиться к контейнеру, а затем использовать Ctrl-d с последующим подчеркиванием для отсоединения:
docker attach my-container –detach-keys = “Ctrl-d, _”
Флаг –detach-keys использует тот же формат последовательности клавиш, что и параметр конфигурации detachKeys. Флаг отменяет настройку docker.json; это, в свою очередь, отменяет последовательность Docker по умолчанию Ctrl-P / Ctrl-Q.
Отсоединение, когда последовательность клавиш не работает
Иногда вы можете столкнуться с контейнерным процессом, который отказывается отсоединяться, даже когда вы вводите последовательность клавиш. Это может произойти, если входной поток контейнера не подключен к вашему терминалу (флаг -i) или ему не выделен псевдо-TTY (флаг -t). Вы также можете столкнуться с этой проблемой, если процесс вашего контейнера обрабатывает последовательность клавиш отсоединения, и вы не переопределили ее при подключении.
В этих условиях все еще можно отсоединить терминал от контейнера. Вам нужно временно открыть другое окно оболочки и использовать его, чтобы убить процесс docker.attach, который сохраняет вложение активным.
Сначала найдите идентификатор процесса прикрепления:
ps -ef | grep attach
Используйте вывод ps, чтобы определить процесс docker.attach, который вам нужно убить. Команда в столбце CMD должна идентифицировать вложение, которое вы ищете. Запишите соответствующий номер PID и используйте команду kill, чтобы убить этот процесс:
kill -9
Вы должны увидеть, как исходная оболочка отделилась от контейнера Docker и вернулась в нормальное рабочее состояние. Теперь вы можете закрыть вторую оболочку и продолжить использование исходной.
Этот метод работает, убивая процесс Docker CLI, который подключал терминал к контейнеру, а не процесс в контейнере, который поддерживает его работу. Ваш исходный терминал снова становится пригодным для использования, а контейнер остается в рабочем состоянии.
Повторное подключение к контейнеру
Вы можете повторно подключиться к контейнерам с помощью команды docker attach. Это автоматически присоединяет ввод, вывод вашего терминала, и потоки ошибок в указанный контейнер:
докер прикрепить мой-контейнер
По умолчанию подключены все три потока. Вы можете опустить входной поток, передав флаг –no-stdin. Выходные данные контейнера будут передаваться в ваш терминал, но вы не сможете вводить какие-либо данные.
Снова используйте последовательность клавиш, чтобы отсоединить, или Ctrl-C, чтобы остановить процесс и контейнер. Если вы нажмете Ctrl-C или выйдете, docker attach установит $? в вашей оболочке правильно, чтобы вы могли проверить код выхода контейнера.
Резюме
Правильный способ отсоединения от контейнера Docker – это довольно непонятная последовательность клавиш, которая возвращает вас в оболочку. Вы можете настроить эту последовательность, чтобы улучшить запоминаемость и избежать конфликтов с клавиатурой вашего контейнера.
Последовательности отсоединения клавиатуры могут быть неэффективными в некоторых случаях. По-прежнему можно отсоединиться от контейнера, определив и прервав процесс, поддерживающий вложение. В этом сценарии следует использовать обычные команды Unix, такие как ps и kill.
Наконец, если вы хотите, чтобы ваш контейнер был постоянно отключен, запустите его с флагом -d (docker run -d my-image: latest). Это отправит контейнер прямо в фоновый режим и не будет выводить данные в вашу оболочку. Отсоединенные контейнеры всегда видны с помощью команды docker ps и могут быть остановлены с помощью docker stop my-container.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)