Запустить принудительно остановленный docker контейнер можно следующим способом

Шпаргалка Docker

22 October 2014

Создание образа

docker pull ОБРАЗ — загружает образ из Docker Hub (аналог GitHub для Docker)

docker build ПУТЬ | URL — создает образ с помощью Dockerfile
Параметры:

  • -t | —tag=»» — помечает созданный образ переданным названием (и, тэгом, если он будет передан)
  • —rm — Удаляет промежуточные контейнеры после успешной сборки (по умолчанию == true)

Управление образами

docker rmi — Удаляет образ, образ не может быть удален, если существуют контейнеры (даже незапущенные), которые основаны
на данном образе
Параметры:

  • -f — позволяет удалить образ даже если на нём основаны контейнеры

docker images — Отображает список всех существующих образов
Параметры:

  • -a | —all — отображает все образы (по умолчанию не отображает промежуточные контейнеры)
  • -q — отображает только id образов, вместо таблицы

Запуск и остановка контейнеров

docker run ОБРАЗ [КОМАНДА + АРГУМЕНТЫ] — Запускает выбранный образ в новом контейнере
Параметры:

  • -d | —detach — запускает контейнер в фоновом режиме и выводит только id свежесозданного контейнера. (по умолчанию == false )
  • -i | —interactive — запускает контейнер в интерактивном режиме (оставляет STDIN открытым, даже если контейнер запущен в неприкрепленном режиме)
  • -t | —tty — запускает псевдотерминал, часто используется с -i
  • -p | —publish=[] — пробрасывает порты контейнера в хост. Формат: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
  • -e | —env=[] — пробрасывает переменные окружения внутрь контейнера.
  • -v | —volume=[] — пробрасывает директорию файловой системы внутрь контейнера

docker stop КОНТЕЙНЕР — останавливает контейнер, передавая внутрь SIGTERM, а по истечении таймаута — SIGKILL

  • docker start КОНТЕЙНЕР — запускает остановленный контейнер.
    Параметры:
    • -i | —interactive — аналогично docker run -i
  • docker restart КОНТЕЙНЕР — Перезапускает выбранный контейнер с помощью docker stop и docker start
  • docker kill КОНТЕЙНЕР — Убивает контейнер, передавая внутрь SIGKILL
  • Управление контейнерами

    • docker port КОНТЕЙНЕР — отображает маппинг портов между хостом и контейнером
    • docker ps — отображает список запущенных контейнеров
      Параметры:
      • -a | —all=(true|false) — отображать ли все контейнеры. По умолчанию == false , т.е. отображаются только запущенные контейнеры
      • -q — отображает только ID контейнеров вместо таблицы
    • docker rm КОНТЕЙНЕР — удаляет контейнер. По умолчанию можно удалить только запущенный контейнер.
      Параметры:
      • -f | —force=(true|false) — позволяет удалить запущенный контейнер. Используется передача SIGKILL внутрь.
    • docker diff — отображает изменения относительно образа.

    Синтаксис Dockerfile

    Dockerfile служит скриптом сборки для команды docker build . Перед началом сборки docker передает сборщику всё содержимое папки с Dockerfile’ом,
    поэтому располагать его в корневой директории системы будет не лучшей идеей.

    Первая инструкция обязательно должна быть инструкцией FROM.

    FROM ОБРАЗ | FROM ОБРАЗ:ТЭГ — Задает базовый образ для последующих инструкций. Может встречаться несколько раз в одном Dockerfile,
    если необходимо собрать несколько образов за раз.

    MAINTAINER имя — Позволяет задать поле Author сгенерированного образа

    RUN команда | RUN [«исполняемый файл», «параметр1», «параметр2», ..] — Запускает команду на основе текущего образа и фиксирует изменения в новом образе. Новый образ будет использован для исполнения последующих инструкций. Первый синтаксис подразумевает запуск команд в стандартной оболочке (bin\sh -c)

    Читайте также:  Способы приготовления пищи тушение

    CMD [«исполняемый файл», «параметр1», «параметр2»] | CMD [«параметр1», «параметр2»] | CMD команда параметр1 параметр2 — Предоставляет значения по умолчанию для запуска контейнера. Эти значения могут как включать исполняемый файл (варианты 1, 3), так и не включать его (вариант 2). В последнем случае запускаемая команда
    должна быть задана с помощью инструкции ENTRYPOINT .

    EXPOSE порт — Информирует Docker, что контейнер будет прослушивать указанные порты во время исполнения. Docker может использовать эту информацию, чтобы соединять контейнеры между собой используя связи. EXPOSE сам по себе не делает порт доступным из хостовой системы. Для того, чтобы открыть порты в хостовую систему следует использовать флаг -p .

    ENV ключ значение — Позволяет задавать переменные окружения. Эти переменные будут использованы при запуске контейнера из собранного образа. Могут быть просмотрены с помощью команды docker inspect , а также переопределены с помощью флага —env команды docker run .

    ADD ОТКУДА КУДА — Используется для добавления новых файлов, директорий или ссылок на удалённые файлы в файловую систему контейнера. Несколько ОТКУДА может быть передано одновременно, но в этом случае все адреса должны быть относительны для директории, из которой происходит сборка. Каждый вхождение ОТКУДА может содержатьодин или несколько символов подстановки, которые будут разрешены с использование функции языка Go filepath.Match. КУДА должен быть абсолютным путем внутри контейнера.

    ENTRYPOINT [«исполняемый файл», «параметр1», «параметр2»] | ENTRYPOINT команда параметр1 параметр2 — позволяет сконфигурировать контейнер так, чтобы он запускался как исполняемый файл. В отличии от команды CMD значение не будет переопределено аргументами, переданными в команду docker run . Таким образом, аргументы из команды docker run будут переданы внутрь контейнера, т.е. docker run ОБРАЗ -d передаст -d исполняемому файлу.

    VOLUME [ПУТЬ] — создает точку монтирования с указанным именем и помечает её как содержащую подмонтированные разделы из хостовой системы или других контейнеров. Значение может быть задано как массив JSON, например, VOLUME [«/var/log/»] , так и как обычной строкой с одним или несколькими аргументами, например VOLUME /var/log или VOLUME /var/log /var/db

    USER имя — позволяет задавать имя пользователя или UID, который будет использован для запуска образа, а так же для любой из инструкций RUN

    WORKDIR ПУТЬ — задает рабочую директорию для команд RUN , CMD и ENTRYPOINT . Инструкция может быть использована несколько раз. Если ПУТЬ относителен, то он будет относительным для ПУТИ, заданным предыдущей инструкцией WORKDIR .

    Источник

    Docker посмотреть запущенные контейнеры, запустить или остановить контейнеры

    Docker — это популярный инструмент виртуализации, который копирует конкретную операционную среду поверх основной ОС. Каждая среда называется контейнером. Управление контейнерами необходимо для работы в Docker.

    Контейнер использует образ предварительно сконфигурированной операционной системы, оптимизированный для конкретной задачи. Когда образ Docker запущен, он существует в контейнере. Например, несколько контейнеров могут одновременно запускать один и тот же образ в одной операционной системе.

    Список запущенных Docker контейнеров

    Базовый формат Docker:

    Чтобы вывести список всех запущенных контейнеров Docker, введите в окне терминала следующее:

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

    Читайте также:  Лисички грибы способы приготовления

    Чтобы вывести список всех работающих и остановленных контейнеров, добавьте параметр –a :

    Для вывода списка контейнеров по их идентификатору используйте параметр –aq :

    Чтобы просмотреть общий размер файла каждого контейнера, используйте параметр –s :

    Чтобы просмотреть список последних созданных контейнеров, используйте параметр –l :

    Команда ps предоставляет несколько столбцов информации:

    • Container ID — Уникальный буквенно-цифровой номер для каждого контейнера
    • Image — Образ базовой операционной системы, на котором основан контейнер
    • Command — команда, запустившая контейнер
    • Created — Как давно был создан контейнер
    • Status — Время работы или простои
    • Ports — Указывает любые порты, перенаправляемые в контейнер для работы в сети.
    • Name — Памятное имя, присвоенное программным обеспечением Docker

    Как запустить Docker контейнер

    Основная команда для запуска одного или нескольких остановленных контейнеров Docker docker start :

    Вы можете указать контейнер, используя его имя или идентификатор (длинный или короткий).

    Чтобы создать новый контейнер из образа и запустить его, используйте docker run :

    Если вы не определите имя для вновь созданного контейнера, он создаст случайное имя строки. Чтобы определить имя контейнера, используйте параметр ––name :

    Вышеупомянутая команда создаст контейнер Ubuntu_test на основе образа ubuntu: 14.04 и запустит его.

    Контейнер может быть запущен, но вы не сможете взаимодействовать с ним. Чтобы запустить контейнер в интерактивном режиме, используйте параметры –i и –t :

    В приведенном выше примере система создает контейнер Test_2 из образа ubuntu и подключается к нему, позволяя запускать команды непосредственно в контейнере.

    Вместо использования параметров -i или -t , используйте команду для подключения к работающему контейнеру : attach

    Как остановить Docker контейнер

    Чтобы остановить Docker контейнер, используйте команду docker stop :

    Замените container_id на имя контейнера или идентификатор.

    По умолчанию вы получаете 10-секундный период. Команда stop указывает контейнеру остановить службы после этого периода. Используйте параметр —time для определения другого периода, выраженного в секундах:

    Чтобы немедленно остановить docker контейнер, не дожидаясь окончания периода:

    Чтобы остановить все запущенные контейнеры, введите следующее:

    Эту же команду можно использовать с kill . Это остановит все контейнеры, не давая им возможности выйти.

    Заключение

    Данное руководство показывает все команды и параметры для для просмотра, запуска и остановки Docker контейнеров. Docker используется командами разработчиков для обеспечения согласованности на разных машинах.

    Источник

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

    Я хотел бы запустить остановленный контейнер Docker с помощью другой команды, поскольку команда по умолчанию дает сбой, то есть я не могу запустить контейнер, а затем использовать docker exec.

    В принципе, я хотел бы запустить оболочку, чтобы я мог проверить содержимое контейнера.

    К счастью, я создал контейнер с параметром -it!

    7 ответов

    Найдите идентификатор остановленного контейнера

    Зафиксируйте остановленный контейнер:

    Эта команда сохраняет измененное состояние контейнера в новый образ user/test_image

    Запуск / запуск с другой точкой входа:

    Заметка:

    Выполненные выше шаги просто запускают остановленный контейнер с таким же состоянием файловой системы. Это отлично подходит для быстрого расследования. Но переменные среды, конфигурация сети, подключенные тома и другие данные не наследуются, вы должны указать все эти аргументы явно.

    Шаги по запуску остановленного контейнера были заимствованы отсюда: (последний комментарий) https://github.com / docker / docker / issues / 18078

    Это не совсем то, о чем вы просите, но вы можете использовать docker export в остановленном контейнере, если все, что вам нужно, — это проверить файлы.

    Читайте также:  Способ получения доходов семьи

    Моя проблема:

    • Я запустил контейнер с docker run
    • А затем добавил несколько файлов в этот контейнер
    • Затем я закрыл контейнер и попытался запустить его снова той же командой, что и выше.
    • Но когда я проверил новые файлы, они отсутствовали
    • когда я запустил docker ps -a , я увидел два контейнера.
    • Это означает, что каждый раз, когда я запускал команду docker run , создавался новый образ

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

    • docker ps , чтобы получить контейнер вашего контейнера
    • docker container start , чтобы запустить существующий контейнер
    • Затем вы можете продолжить с того места, где вы уехали. например docker exec -it /bin/bash
    • Затем вы можете решить создать из него новое изображение.

    Я взял ответ @Dmitriusan и превратил его в псевдоним:

    псевдоним docker-run-prev-container = ‘prev_container_id = «$ (docker ps -aq | head -n1)» && docker commit «$ prev_container_id» «prev_container / $ prev_container_id» && docker run -it —entrypoint = bash «prev_container / $ prev_container_id «‘

    Добавьте это в свой файл псевдонимов

    /.bashrc , и у вас будет отличный новый псевдоним docker-run-prev-container , который перенесет вас в оболочку из предыдущего контейнера.

    Полезно для отладки неудачных docker build s.

    Добавьте чек в начало вашего скрипта Entrypoint

    Docker действительно необходимо реализовать это как новую функцию, но вот еще один вариант обхода для ситуаций, когда у вас есть точка входа, которая завершается после успеха или неудачи, что может затруднить отладку.

    Если у вас еще нет сценария Entrypoint, создайте тот, который запускает все команды, которые вам нужны для вашего контейнера. Затем в верхней части этого файла добавьте эти строки в entrypoint.sh :

    Чтобы гарантировать, что cat удерживает соединение, вам может потребоваться TTY. Я запускаю контейнер со своим скриптом Entrypoint следующим образом:

    Это приведет к однократному запуску сценария с созданием файла, указывающего, что он уже запущен (в виртуальной файловой системе контейнера). Затем вы можете перезапустить контейнер для выполнения отладки:

    Когда вы перезапускаете контейнер, файл already_ran будет найден, в результате чего сценарий Entrypoint остановится с cat (который просто вечно ждет ввода, который никогда не поступит, но сохраняет контейнер в живых). Затем вы можете выполнить сеанс отладки bash :

    Во время работы контейнера вы также можете удалить already_ran и вручную выполнить сценарий entrypoint.sh , чтобы повторно запустить его, если вам нужно отладить таким образом.

    Отредактируйте этот файл (соответствующий вашему остановленному контейнеру):

    Измените параметр «Путь», чтобы он указывал на вашу новую команду, например / bin / bash. Вы также можете установить параметр «Args» для передачи аргументов команде.

    Перезапустите службу докеров (обратите внимание, что это остановит все запущенные контейнеры):

    Перечислите свои контейнеры и убедитесь, что команда изменилась:

    Запустите контейнер и прикрепите к нему, теперь вы должны быть в своей оболочке!

    Работал над Fedora 22 с использованием Docker 1.7.1.

    ПРИМЕЧАНИЕ. Если ваша оболочка не интерактивна (например, вы не создали исходный контейнер с параметром -it), вы можете вместо этого изменить команду на «/ bin / sleep 600» или «/ bin / tail. -f / dev / null «, чтобы у вас было достаточно времени для выполнения» docker exec -it CONTID / bin / bash «в качестве еще одного способа получения оболочки.

    Источник

    Оцените статью
    Разные способы