Как перезапустить остановленный контейнер докеров
Я запускаю контейнер-докер из изображения с помощью следующей команды:
$ docker run -d myimage /bin/bash -c "mycommand"
Когда "mycommand"
закончен, контейнер остановлен (я предполагаю, что он остановлен), но он не удаляется, потому что я вижу его с помощью этой команды:
$ docker ps -a
Есть ли способ restart
этот контейнер с теми же параметрами и сохранить данные, созданные командой mycommand
?
Ответы
Ответ 1
Да, когда начальная команда завершает свое выполнение, контейнер останавливается.
Вы можете запустить остановленный контейнер, используя:
docker start container_name
Если вы хотите увидеть результат своей команды, вы должны добавить -ai
:
docker start -ai container_name
PS. есть docker restart container_name
но он используется для перезапуска запущенного контейнера - я считаю, что это не ваш случай.
Ответ 2
Во-первых, $ docker ps -a
показывает все контейнеры (те, которые запущены, и остановленные), поэтому это означает, что вы не видите ваш остановленный контейнер в списке.
Во-вторых, вы можете легко запустить остановленный контейнер:
$ docker start container_name
После запуска контейнера вы можете выполнить команду:
$ docker exec -it container_name bash -c "mycommand"
Материал, который вы создаете в контейнере, останется в вашем контейнере до тех пор, пока он существует. Если вы хотите сохранить данные, даже если ваш контейнер удален, вы можете использовать том.