Рассматривать:
docker run -it centos /bin/bash
Я нажал Ctrl+, Dчтобы выйти.
Я хочу продолжать запускать этот контейнер, но обнаружил, что не могу.
Единственный метод
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Я прав? Есть ли лучший метод? (Я использую докер 0.8.0.)
Ответы:
Вы можете перезапустить существующий контейнер после его выхода, и ваши изменения все еще там.
источник
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
docker start -i $(docker ps -q -l)
. ;-) Именование может помочь лучше контролировать, какой контейнер выбран.-l
получите последнее, хорошо ...`docker ps -q -l`
это расширение. Он будет заменен идентификатором последнего созданного (-l) контейнера Docker. -q просто подавляет другую информацию (id у постели), обычно выводимую с помощью`docker ps`
. ---- примечание: Backtick не является кавычкой, он имеет особое значение. Все, что вы вводите между обратнымиCreated...
из которого он не может быть запущен сdocker start ...
. Однако его можно перезапустить с помощьюdocker restart ...
-l
только получает "последний" докер. Если вы похожи на меня иdocker ps -a
показывает более чем одну вещь, которую вам нужно запустить, то вы можете перезапустить «все» (-a) из них, изменив приведенную выше команду наdocker start `docker ps -q -a`
.-q
просто делает это "тихо" (не выходной журнал).Объяснение:
docker start
запуск контейнера (требуется имя или идентификатор)-a
присоединение к контейнеру в-i
интерактивном режимеdocker ps
Список контейнеров-q
список только идентификаторов контейнеров-l
список только последний созданный контейнеристочник
Использование:
Это запустит все контейнеры, которые находятся в состоянии выхода.
Это подключится к конкретному контейнеру.
источник
docker exec -it <container id> /bin/bash
(или просто bash).Если вы хотите сделать это несколькими, легко запоминающимися командами:
docker ps -a
docker start -i <name/id>
-i
Флаг говорит докер прикрепить к стандартному вводу контейнера.Если контейнер не был запущен с интерактивной оболочкой для подключения, вам нужно сделать это для запуска оболочки:
/bin/sh
Является оболочка , как правило , доступны с альпийскими на основе изображений.источник
Error response from daemon: Container <id> is not running
Если вы хотите продолжить только один Docker-контейнер с известным именем:
источник
docker start <name>
где <имя> - это имя вашего контейнера. По крайней мере, с докером v19.03.8Следуй этим шагам:
Выполните команду ниже, чтобы увидеть, что все службы контейнеров работают и остановлены. Опция
-a
дается, чтобы увидеть, что контейнер также останавливаетсяЗатем запустите Docker-контейнер по имени
container_id
или тегу контейнера.Скажем из рисунка выше, идентификатор контейнера 4b161b302337
Итак, команда для запуска
Можно проверить, работает ли контейнер с
источник
Если у вас есть именованный контейнер, его можно запустить, запустив
где container_name - это имя контейнера, которое должно быть указано во время создания контейнера. Вы можете заменить
container_name
на идентификатор контейнера, если контейнер не назван. Идентификатор контейнера можно найти, выполнив:источник
Эти команды будут работать для любого контейнера (не только для последних вышедших). Этот способ будет работать даже после перезагрузки вашей системы. Для этого эти команды будут использовать «идентификатор контейнера».
шаги:
Перечислите все докеры с помощью этой команды и запишите идентификатор контейнера, который вы хотите перезапустить:
docker ps -a
Запустите свой контейнер, используя идентификатор контейнера:
docker start <container_id>
Присоедините и запустите свой контейнер:
docker attach <container_id>
ПРИМЕЧАНИЕ: работает на Linux
источник
по имени
или по идентификатору
это перезапускает остановленный контейнер, используйте -i для подключения STDIN контейнера или вместо -i вы можете присоединить к сеансу контейнера (если вы запускаете с -it)
источник
Это запустит все контейнеры, которые находятся в состоянии «Выход»
источник