Меню Закрыть

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 — запускает контейнер в фоновом режиме и выводит только >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", ..] — Запускает команду на основе текущего образа и фиксирует изменения в новом образе. Новый образ будет использован для исполнения последующих инструкций. Первый синтаксис подразумевает запуск команд в стандартной оболочке (binsh -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. В ней мы рассмотрим, как ты уже догадался, десятку самых полезных команд.

        #1. docker ps — смотрим список запущенных контейнеров

        Наверное, следует начать с команды docker ps, выводящей список запущенных контейнеров. Ей можно передать несколько параметров, вот самые полезные из них:

        • -q — «тихий» режим, в котором команда выводит только id контейнеров (полезно, когда вам нужно знать только id или же при использовании этой команды в сценариях).
        • -a — показывает все контейнеры, а не только запущенные.

        #2. docker pull — загрузка образа

        Как правило, образы создаются на основе базового — из Docker Hub, где есть множество уже готовых образов и которые ты можешь использовать, а не тратить время на создание собственного. Для загрузки образа используется команда docker pull.

        Читайте также:  Чем отличается pdf от pdf a

        #3. docker build — собирает образ

        Данная команда собирает образ Docker из файла докера (dockerfile) и контекста сборки. Контекст сборки — это набор файлов, расположенных по определенному пути. Для задания имени образа используйте параметр -t, например, «docker build -t my.». Собирает образ из текущего каталога (».«) — последний параметр это имя каталога, в нашем случае точка указывает, что каталог — текущий.

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

        Команды для работы с контейнерами имеют следующий синтаксис:

        Рассмотрим некоторые из них более подробно.

        Создание и запуск контейнеров

        Запомните основные постулаты контейнеров в docker

        1. Контейнер живет, пока живет процесс, вокруг которого рождается контейнер.
        2. Внутри контейнера этот процесс имеет p >Создание контейнера

        -a – сокращение от –attach (прикрепить). Контейнер можно прикрепить к стандартным потокам STDIN, STDOUT или STDERR.
        Запуск существующего контейнера (можно обращаться к контейнеру по идентификатору или имени):

        Определить идентификатор или имя можно при помощи команды ps. Опция «–l» означает последний запущенный контейнер:

        Как уже было рассмотрено в предыдущей части, команда run объединяет создание и запуск контейнера. Для краткости с ней можно не указывать слово container.

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

        Запуск в фоновом режиме

        -d – это сокращение от –detach (отсоединить). Контейнер будет работать в фоновом режиме, и вы сможете использовать терминал для других команд.

        Присвоение имени

        Чтобы не приходилось узнавать и запоминать идентификатор контейнера, при создании можно назначать каждому контейнеру уникальное имя, используя опцию командной строки —name, как в следующем примере:

        После этого можно работать с контейнером (выполнять команды start, stop, remove, top, stats), обращаясь к нему по имени, например:

        docker start myname – запуск контейнера
        docker stats myname – отображение статистики использования ресурсов
        docker top myname – отображение запущенных в контейнере процессов

        Если вы попытаетесь выполнить например команду top, из выше указанного примера то получите ошибку

        Я думаю если вы внимательно читали статью то сможете сами ответить почему возникает эта ошибка.

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

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

        Структура этой команды следующая:

        -i задает запуск интерактивного сеанса.
        -t выделяет TTY и подключает стандартные потоки ввода и вывода.
        ubuntu – образ, используемый для создания контейнера.
        bash (или /bin/bash) – запускаемая в контейнере Ubuntu команда.

        После запуска контейнера с вышеуказанными ключами, мы как бы проваливаемся внутрь контейнера. Для выхода из запущенного сеанса и возвращения к терминалу вашего узла воспользуйтесь командой exit. Она прерывает все процессы контейнера и останавливает его:

        Читайте также:  Как настроить универсальный пульт rm 9511

        Если вы интерактивно подключены к контейнеру, и вам требуется выйти из сеанса, не прерывая его, при помощи комбинаций клавиш Ctrl+p и Ctrl+q можно выйти из консоли и вернуться к терминалу вашего хоста.

        Если вы хотите запустить контейнер в режиме демона используйте опцию ‘-d’.

        Для повторного подключения к запущенному контейнеру требуется знать его идентификатор или имя. Для этого запустите команду docker ps, а затем выполните docker attach, указав идентификатор или имя.

        Проверка состояния контейнеров

        Если у вас запущено несколько контейнеров Docker, и вы хотите выбрать, с каким именно работать, потребуется вывести их список. Для этого применяется команда ls. Помимо вывода списка контейнеров она выводит также полезную информацию о них. Команда без опций выдает список запущенных контейнеров:

        Опция ‘-a’ указывает команде выводить все контейнеры, а не только запущенные, опция -s выводит размер каждого контейнера:

        Команда inspect выдает множество полезной информации о контейнере:

        Для вывода логов контейнера выполните команду logs:

        Остановка контейнера

        Обычно контейнер завершается автоматически после завершения процесса, но иногда требуется собственноручно завершить запущенный контейнер. Команда stop осуществляет «мягкое» завершение контейнера, по умолчанию предоставляя 10 секунд для завершения всех процессов:

        Для немедленного завершения выполните команду kill. В большинстве ситуаций stop предпочтительнее.

        Немедленное завершение всех запущенных контейнеров:

        Удаление контейнера

        удаление заданного контейнера.

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

        Изменения в контейнере

        Как уже отмечалось в начале, после остановки контейнера все изменения сделанные в нем удаляются. Это не совсем удобно, что же делать если нам нужно сохранить изменения? Для этого мы можем создать собственный контейнер взяв за основу уже готовый. Запустив интерактивный сеанс, мы можем работать в контейнере как на обычной Linux-машине и вносить любые необходимые изменения, например, устанавливать нужные пакеты. Допустим, нам требуется контейнер Ubuntu с сервером Nginx. Установим необходимые для этого программы:

        Теперь нужно сохранить эти изменения, чтобы в следующий раз у нас был контейнер, где уже есть все необходимое. Для этого сначала нужно выйти из контейнера, выполнив команду exit, а затем подтвердить сделанные изменения командой commit:

        Где идентификатор – это тот идентификатор, который использовался для первоначального запуска, а new-template – назначенное нами имя нового образа. Теперь он будет виден, если выполнить команду docker images:

        Созданный нами новый образ готов к использованию со всеми сделанными изменениями. Кроме того, мы можем отправить его в Docker Hub, чтобы при необходимости загружать его в других местах. Для этого войдите в свою учетную запись и воспользуйтесь командой push:

        где имя_пользователя – имя, соответствующее вашему аккаунту.

        Заключение

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

        Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

        Рекомендуем к прочтению

        Добавить комментарий

        Ваш адрес email не будет опубликован.