Вот решение, когда контейнер докеров закрывается нормально, и вы можете редактировать файл 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
для получения терминала контейнера.