Как запустить интерактивную оболочку в контейнере, который постоянно завершается?

#docker

#docker

Вопрос:

Я запустил экземпляр контейнера, используя изображение postgres. Пока контейнер был запущен, я подключился к нему с помощью

docker exec -it postgres-13.1 bash

Отсюда я отредактировал postgresql.conf и ввел опечатку, так что попытка перезапустить контейнер немедленно завершается, и в журналах отображаются

 FATAL:  configuration file "/var/lib/postgresql/data/postgresql.conf" contains errors
 

Невозможно вызвать сценарий bash с помощью docker exec -it postgres-13.1 bash , потому что это относится только к запущенному контейнеру.

Какую команду я могу выполнить, чтобы запустить контейнер и перейти непосредственно в оболочку bash вместо попытки запустить сервер базы данных?

Ответ №1:

docker cp может копировать файлы в (или из) остановленный контейнер. Этого должно быть достаточно для восстановления файла и перезапуска контейнера.

Ответ №2:

Как упоминал Крис, docker cp команда работает для вашего случая Создайте файл (скажем, правильный-postgresql.conf ) с конфигурацией на вашем компьютере и выполните следующие действия, а затем вы можете запустить свой контейнер, и он работает нормально.

 docker cp correct-postgresql.conf <containerId>:/var/lib/postgresql/data/postgresql.conf