Ответ 1
Отвечая на мой собственный вопрос... все еще надеясь на лучший ответ от более узнаваемого человека!
Есть 2 возможности.
1) Редактирование файловой системы непосредственно на хосте. Это несколько опасно и имеет шанс полностью разбить контейнер, возможно, другие данные в зависимости от того, что пойдет не так.
2) Изменение запуска script на что-то, что никогда не терпит неудачу, как запуск bash, выполнение исправлений/исправлений, а затем снова изменение программы запуска на нужную (например, node или что бы это было раньше).
Подробнее:
1) Используя
docker ps
чтобы найти запущенные контейнеры или
docker ps -a
чтобы найти все контейнеры (включая остановленные) и
docker inspect (containername)
найдите "Id", одно из первых значений.
Это часть, которая содержит детали реализации и может измениться, помните, что вы можете потерять контейнер таким образом.
Перейдите к
/var/lib/docker/aufs/diff/9bc343a9..(long container id)/
и там вы найдете все файлы, которые были изменены по отношению к изображению, на котором основан контейнер. Вы можете перезаписывать файлы, добавлять или редактировать файлы.
Опять же, я бы не рекомендовал этого.
2) Как описано в fooobar.com/info/79785/..., вы можете найти конфигурацию json config.json по пути, например
/var/lib/docker/containers/9bc343a99..(long container id)/config.json
Там вы можете изменить args из e. г. "nodejs app.js" - "/bin/ bash". Теперь перезапустите службу докеров и запустите контейнер (вы должны увидеть, что он теперь правильно запускается). Вы должны использовать
docker start -i (containername)
чтобы убедиться, что он не сразу уйдет. Теперь вы можете работать с контейнером и/или позже присоединяться с помощью
docker exec -ti (containername) /bin/bash
Кроме того, docker cp весьма полезен для копирования файлов, которые редактировались вне контейнера.
Кроме того, следует только вернуться к этим мерам, если контейнер все-таки "потерян" в любом случае, поэтому любое изменение будет улучшением.