Как правильно поддерживать работоспособность контейнера Docker? (Связанный с uWSGI)

#docker #uwsgi

#docker #uwsgi

Вопрос:

Новичок здесь. Итак, я пытаюсь развернуть веб-приложение с помощью AWS docker nginx uWSGI flask. Насколько я знаю, контейнер docker должен иметь какое-то задание переднего плана, чтобы поддерживать себя в рабочем состоянии, иначе он убьет себя после выполнения.

Я заметил, что uWSGI, когда он не запускается как демон, является процессом переднего плана, поэтому я подумал, что могу использовать это, чтобы поддерживать работоспособность моего контейнера. Проблема в том, что после запуска на переднем плане нет абсолютно никакого способа вернуться к оболочке… (пожалуйста, lmk, если я здесь ошибаюсь!) это означает, что я не могу запускать в свой контейнер и запускать на нем команды всякий раз, когда мне нужно обслуживание сервера.

Я видел практику, когда вы просто поддерживаете фиктивную обработку, повторяя простую строку каждые несколько секунд или около того. Но это выглядит немного неуклюже — действительно ли это желательный подход? Если это так, есть ли лучшая идея фиктивного процесса, чем echoing, которая могла бы сделать мою консоль немного чище?

Заранее спасибо.

Комментарии:

1. Вы запускаете контейнер, выполняя свою основную команду, которая будет оставаться в рабочем состоянии в течение всего срока службы контейнера. Вы запускаете контейнер обычно в фоновом режиме, чтобы не блокировать, например docker run -d -t image --name container ... . Позже, когда вы захотите поиграть внутри контейнера, вы можете exec войти в него docker exec -it container bash

Ответ №1:

вы можете попасть в каждый запущенный контейнер с помощью bash с:

 docker exec -it container-name /bin/bash
  

введите описание изображения здесь

Комментарии:

1. Я все равно не смогу запускать какие-либо команды внутри контейнера, потому что uWSGI работает на переднем плане, и я не могу найти способ вернуться к контейнерному bash.

2. вы можете запустить вторую параллель к той, которая уже запущена. Или вам нужно точно настроить bash из основного процесса?

Ответ №2:

Образ Docker создается с помощью файла Docker, и в файле Docker вы указываете шаги, необходимые для создания образа, вы заметили, что последняя инструкция в файле Docker обычно a CMD при запуске образа с помощью этой команды docker run image-name docker выполняет команду, указанную вами в CMD in container, и если эта команда заканчивается, ваш контейнер останавливается. но вы можете заменить эту команду чем-то другим, например docker run -it image-name bash , эта команда предоставляет вам интерактивную оболочку, и если вы выходите из нее (завершаете ее), ваш контейнер также останавливается.(вы заменили последнюю команду, указанную вами, на CMD bash here )

docker exec -it container-name /bin/bash : эта команда используется, когда вы хотите запустить интерактивную оболочку в запущенном контейнере

Комментарии:

1. если я слишком далеко, пожалуйста, сообщите мне, и я удалю это 🙂