Как перезапустить остановленный контейнер докеров

Я запускаю контейнер-докер из изображения с помощью следующей команды:

$ 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"

Материал, который вы создаете в контейнере, останется в вашем контейнере до тех пор, пока он существует. Если вы хотите сохранить данные, даже если ваш контейнер удален, вы можете использовать том.