Вот решение, когда контейнер докеров закрывается нормально, и вы можете редактировать файл Dockerfile.
Обычно при запуске контейнера докеров приложение обслуживается с помощью команды. Из справочника по Dockerfile,
Инструкции CMD и ENTRYPOINT определяют, какая команда выполняется при запуске контейнера. ... Dockerfile должен указывать хотя бы одну из команд CMD или ENTRYPOINT.
Когда вы создаете образ и не указываете какую-либо команду с помощью CMD или ENTRYPOINT, будет выполнена команда CMD или ENTRYPOINT базового образа.
Например, в официальном файле Dockerfile Ubuntu есть CMD ["/bin/bash"]
(https://hub.docker.com/_/ubuntu < / а>). Теперь команда bin/bash/
может принимать ввод, а команда docker run -it IMAGE_ID
присоединяет STDIN к контейнеру. В результате вы получаете интерактивный терминал, а контейнер продолжает работать.
Когда в Dockerfile указана команда с CMD или ENTRYPOINT, эта команда выполняется при запуске контейнера. Теперь, если эта команда может завершиться без ввода каких-либо данных, она завершится и контейнер выйдет. docker run -it IMAGE_ID
НЕ будет предоставлять интерактивный терминал в этом случае. Примером может служить образ докера, созданный из файла Docker, приведенного ниже:
FROM ubuntu
ENTRYPOINT echo hello
Если вам нужно перейти в терминал этого образа, вам нужно будет оставить контейнер работающим, изменив команду точки входа.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
После обычного запуска контейнера с docker run IMAGE_ID
вы можете просто перейти к другому терминалу и использовать docker exec -it CONTAINER_ID bash
, чтобы получить терминал контейнера.
person
Sadman Sakib
schedule
30.10.2020