Как продолжить Docker контейнер, который вышел

Рассматривать:

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.)

Ответ 1

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

docker start  `docker ps -q -l` # restart it in the background
docker attach `docker ps -q -l` # reattach the terminal & stdin

Ответ 2

docker start -a -i `docker ps -q -l`

Пояснение:

docker start запустите контейнер (требуется имя или идентификатор)
-a присоединить к контейнеру
-i интерактивный режим
docker ps Список контейнеров
-q список только идентификаторов контейнера
-l список только последний созданный контейнер

Ответ 3

Использование:

docker start $(docker ps -a -q --filter "status=exited")

Это запустит все контейнеры, которые находятся в состоянии выхода.

docker exec -it <container-id> /bin/bash

Это подключится к конкретному контейнеру.

Ответ 4

Если вы хотите продолжить только один Docker-контейнер с известным именем:

docker start  'docker ps -a -q --filter "name=elas"'

Ответ 5

Если вы хотите сделать это несколькими, легко запоминающимися командами:

  1. список остановленных контейнеров:

docker ps -a

  1. скопируйте имя или идентификатор контейнера контейнера, к которому вы хотите присоединить, и запустите контейнер с:

docker start -i <name/id>

Флаг -i указывает -i подключаться к стандартному контейнеру.

Если контейнер не был запущен с интерактивной оболочкой для подключения, вам нужно сделать это для запуска оболочки:

docker start <name/id>
docker exec -it <name/id> /bin/sh

/bin/sh - это оболочка, обычно доступная с альпийскими изображениями.

Ответ 6

Выполните следующие действия:

  1. Запустите команду ниже, чтобы увидеть, что все службы контейнеров работают и остановлены. Опция -a дает возможность увидеть, что контейнер также останавливается

    docker ps -a
    
  2. Затем запустите Docker-контейнер либо по container_id, либо по имени тега контейнера.

    docker start <CONTAINER_ID> or <NAMES>
    

    enter image description here

    Скажите из приведенного выше изображения, идентификатор контейнера 4b161b302337
    Итак, команда для запуска -

    docker start 4b161b302337
    
  3. Можно проверить, работает ли контейнер с

    docker ps
    

Ответ 7

Если у вас есть именованный контейнер, его можно запустить, запустив

docker container start container_name

где container_name - это имя контейнера, которое необходимо указать во время создания контейнера. Вы можете заменить container_name на идентификатор контейнера, если контейнер не назван. Идентификатор контейнера можно найти, выполнив:

docker ps -a

Ответ 8

docker start 'docker ps -a | awk '{print $1}''

Это запустит все контейнеры, которые находятся в состоянии "Выход"