Как посмотреть запущенные контейнеры докер
Список контейнеров Docker
Продолжение серии статей про Docker. В прошлой мы разбирали, как создать контейнер на основе образа. Сегодня же хочу более подробно рассказать, как посмотреть список контейнеров, чтобы понять, какие из них запущены, какие упали, а какие вообще следовало бы удалить, чтобы они не занимали места на диске.
Для просмотра списка контейнеров используется команда docker ps. Она позволяет смотреть как запущенные контейнеры Docker, так и все контейнеры, которые есть в системе.
Синтаксис команды docker ps
В синтаксисе команды вообще нет ничего сложного:
$ docker ps опции
Вот её основные опции:
А теперь разберёмся более подробно, как посмотреть контейнеры Docker.
Запущенные контейнеры Docker
По умолчанию docker ps выводит только запущенные контейнеры и при этом обрезает слишком длинные поля:
Чтобы вывести контейнеры, не обрезая информацию, используйте параметр —no-trunc:
Для того чтобы посмотреть не только запущенные контейнеры, а все, используйте опцию -a:
Вы можете фильтровать контейнеры по имени, например, вывести только те, в имени которых содержится Ubuntu1804:
Есть и другие фильтры, но я не буду здесь их описывать, если они вам нужны, посмотрите официальную документацию. Для того чтобы вывести в список контейнеров Docker дополнительно размер контейнера, используйте опцию -s:
Опция -l может использоваться для просмотра только последнего созданного образа. Это может быть полезно, например, чтобы узнать его идентификатор:
С тем же успехом вы можете смотреть LogPath или другие директории контейреа.
Выводы
Из этой статьи вы узнали, как выполнить просмотр контейнеров Docker. Это довольно простая задача по сравнению с созданием контейнера, но тоже не менее важная.
wtw24 / docker_rus.md
Шпаргалка с командами Docker
Скачайте dmg по этой ссылке:
Реестры и репозитории Docker
Pull (выгрузка из реестра) образа
Push (загрузка в реестр) образа
Первые действия с контейнерами
Первый запуск контейнера
Запуск и остановка контейнеров
Запуск остановленного контейнера
Пауза (приостановка всех процессов контейнера)
Блокировка (до остановки контейнера)
Отправка SIGKILL (завершающего сигнала)
Отправка другого сигнала
Подключение к существующему контейнеру
Получение информации о контейнерах
Информация о контейнере
Изменения в файлах или директориях файловой системы контейнера
Загрузка репозитория в tar (из файла или стандартного ввода)
Сохранение образа в tar-архив
Просмотр истории образа
Создание образа из контейнера
Push (загрузка в реестр) образа
Получение информации о сети
Подключение работающего контейнера к сети
Подключение контейнера к сети при его запуске
Отключение контейнера от сети
Удаление работающего контейнера
Удаление контейнера и его тома (volume)
Удаление всех контейнеров со статусом exited
Удаление всех остановленных контейнеров
Удаление контейнеров, остановленных более суток назад
Удаление неиспользуемых (dangling) образов
Удаление неиспользуемых (dangling) образов даже с тегами
Удаление всех образов
Удаление всех образов без тегов
Остановка и удаление всех контейнеров
Удаление неиспользуемых (dangling) томов
Удаление неиспользуемых (dangling) томов по фильтру
Удаление неиспользуемых сетей
Удаление всех неиспользуемых объектов
По умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже:
Установка Docker Swarm
Прим. перев.: в Docker версий 1.12.0+ ничего дополнительно устанавливать не требуется, т.к. Docker Swarm встроен в Docker Engine в виде специального режима (Swarm mode).
Подключение рабочего узла (worker) к Swarm
Подключение управляющего узла (manager) к Swarm
Основные команды Docker
Рассмотрим систему управления контейнерами под названием Docker. Ознакомимся с базовыми принципами ее работы, а также подробно рассмотрим основные команды, необходимые для управления Docker и ее составляющими.
Краткая справка
Docker — это система управления контейнерами. Контейнеры же представляют собой логическое эволюционное продолжение виртуальных машин. Это изолированная среда для разработки и тестирования программного обеспечения.
Контейнер Docker потребляет мало ресурсов и быстро запускается, а еще его легко переносить с одного устройство на другое. Из-за этих преимуществ Docker постепенно наращивает аудиторию и превращается в некий индустриальный стандарт, которым пользуются даже крупные корпорации вроде Microsoft.
Поэтому стоит хотя бы на базовом уровне понимать, что есть Docker и как им управлять. В этом материале речь пойдет об основных командах для управления контейнерами. Будем их создавать, запускать, удалять и выполнять прочие полезные задачи, возникающие по ходу работы.
Общие сведения об основных командах Docker
Управление контейнерами и образами в Docker мало чем отличается от управления другими приложениями в терминале Linux. Принцип тот же – вводим текст и получаем результат. Сначала надо указать ключевое слово Docker, потом указать команду, которую надо выполнить, а затем объект применения команды, аргументы, опции и прочие дополнения. Типичная операция, выполняемая в Docker, выглядит вот так:
Для того чтобы обратиться к конкретному контейнеру или образу в Docker, используются их ID или названия, придуманные разработчиком. Допустим, для создания и запуска контейнера с названием new_container надо ввести:
У команд существуют опции и аргументы. Их тоже рассмотрим.
Команды для управления контейнерами
Контейнер — ключевая единица в Docker. Поэтому для начала разберемся, как управлять ей.
Далее рассмотрим каждую из команд подробнее.
container create
Из названия понятно, что речь идет о создании нового контейнера. Это основная функция Docker, с нее начинается его работа.
Синтаксис следующий: docker create [опции] название образа [дополнительные команды][аргументы].
В квадратных скобках указываются опциональные компоненты команды. Использовать их необязательно, но можно оптимизировать создаваемый контейнер под свои задачи.
К примеру, добавить ссылку на другой контейнер с помощью тега –link. Или подключить Standard Input с помощью команды в духе:
Либо создать контейнер из образа операционной системы Ubuntu, добавив подключение к терминалу и запуск bash при каждом старте Docker:
Только при наличии терминала можно управлять контейнером. Поэтому его нужно обязательно запрашивать при каждому запуске.
container start
В отличие от предыдущей команды, эта запускает контейнер, который существует, но находится в нерабочем состоянии.
Синтаксис следующий: docker start [опции] название или ID контейнера [название или ID контейнера].
Все просто – вводите команду, а потом указываете название контейнера, чтобы его запустить:
Какой из вариантов использовать, решает разработчик, ориентируясь на собственные предпочтения. Технических отличий нет.
container run
Комбинирует две вышеописанные команды. Сначала создает новый контейнер, а потом тут же его включает.
Синтаксис следующий: docker run [опции] название образа [команды][аргументы].
Практика та же, что мы видели в синтаксисе команды docker create. Разница в одном слове и доступных опциях.
Чтобы создать контейнер из образа Ubuntu и тут же взять контроль над ним через командную строку, нужно сделать запрос терминала через опции команды.
используется для подключения к контейнеру с возможностью передавать ему команды после создания.
stop
Выполняет противоположную функцию. То есть не запускает контейнер, а, наоборот, останавливает его работу.
Например, чтобы выключить контейнер с именем Timeweb, надо ввести в терминал:
Аналогично с ID. Просто имя надо заменить на уникальный код, привязанный к контейнеру. Получится что-то в духе:
restart
Последняя команда, связанная с рабочим состоянием. Она выполняет перезапуск выбранного контейнера.
Синтаксис следующий: docker restart [опции] название или ID контейнера [название или ID контейнера].
Вводите команду, а потом указываете название контейнера, чтобы его перезапустить:
container ls (или docker ps)
Обе команды выполняют одну и ту же задачу. Просто одна из них использовалась раньше, а другая появилась позднее.
docker ps отображает в терминале все запущенные контейнеры. А при добавлении опции -a в список попадают все контейнеры, созданные в системе.
В вывод команды попадают следующие параметры:
При желании можно использовать опцию volume, чтобы в терминале отображались только тома, являющиеся предпочтительным механизмом хранения данных в Docker.
logs
Одна из команд, позволяющая подробнее ознакомиться с тем, как работает Docker. Точнее одна из его запущенных единиц. Показывает, как функционирует контейнер и что в текущий момент с ним происходит. Выводит некий журнал данных.
Если указать ключ –follow и название контейнера, то в терминал в реальном времени будут выводиться логи Docker. Так можно беспрерывно наблюдать за его работой и возможным появлением ошибок.
inspect (для контейнера)
Отображает подробную информацию из Docker после обращения к конкретному контейнеру.
Синтаксис следующий: docker inspect [опции] название или ID контейнера [название или ID контейнера].
По умолчанию отображает данные в формате JSON. Можно использовать дополнительную опцию –format для смены формата данных.
rm
Команда удаления одного или нескольких контейнеров Docker, найденных на диске вашего хостинга.
Синтаксис следующий: docker rm [опции] название или ID контейнера [название или ID контейнера].
Чтобы удалить сразу несколько контейнеров с разными названиями и ID, нужно ввести:
Перед тем как удалить контейнер, нужно его выключить. Для этого надо воспользоваться командой:
Команды Docker для управления образами
Еще одна значимая единица в Docker — образы. Управление ими во многом похоже на управление контейнерами, но есть ряд отличий, которые важно учитывать. Причем как в командах, так и в опциях.
Рассмотрим каждую из них немного подробнее.
build
С помощью этой команды можно собрать образ, используя заранее подобранные параметры. Собираются одни из данных, хранящихся в файлах Dockerfile. Они находятся по определенным URL или заранее загружены в файловую систему.
Синтаксис следующий: docker image build [опции] название и адрес файла Dockerfile, из которого будет собран образ.
Например, если вы хотите собрать образ с названием Timeweb и тегом host в директории moy_repositoriy, то надо ввести в терминал:
Образами можно делиться через сервис Docker Hub. Тогда ими смогут пользоваться другие пользователи Docker, указав при сборке соотвествующий адрес. Для входа в Hub используется команда docker login (еще упомянем ее ниже).
push
После сборки образа на диске хостинга его можно разместить в Docker Hub с помощью отдельной команды.
Синтаксис следующий: docker image push [опции] название и адрес, где будет размещен образ
К примеру, чтобы отправить в хаб образ Timeweb, который мы создали ранее, нужно ввести в терминал:
Он будет размещен по адресу, указанному в команде push. После этого его смогут вытащить другие пользователи.
pull
В Docker Hub находится большой список уже готовых образов, которые были созданы вами или другими пользователями. Чтобы не собирать новые из Dockerfile, можно скачать уже имеющиеся и работать с ними. Чтобы их вытащить, нужна команда pull.
Синтаксис следующий: docker image pull [опции] название и адрес, где будет размещен образ.
К примеру, чтобы вытащить из хаба образ Timeweb, который мы создали ранее, нужно ввести в терминал:
Аналогичным образом его смогут вытаскивать другие пользователи, обращаясь к адресу и названию образа, которые вы указывали.
ls
docker image ls отвечает за отображение в терминале дополнительной информации об образах. Она показывает их список (как и в случае с контейнерами) и информацию о размере каждого.
Синтаксис следующий: docker image pull [опции][адрес репозитория:тег].
В вывод команды можно добавить другие данные с помощью отдельных ключей:
-a — увеличивает список отображаемых образов за счет отображения даже промежуточных. –digests — добавляет в вывод команды еще и дайджесты. -f — фильтрует выдачу по заранее определенным условиям. –format — меняет формат отображения данных на основе шаблона Go. –no-trunc — отключает усечение информации в терминале. -q — показывает ID вместо названий образов.
history
Показывает своего рода историю образа. Речь идет о «слоях», то есть промежуточных вариациях образа, входящих в его состав. Команда history показывает их названия, размер и дату создания.
Синтаксис следующий: docker history [опции] название образа.
Например, чтобы отобразить слои образа Timeweb, введем в терминал:
inspect (для образа)
Отображает подробную информацию из Docker после обращения к конкретному образу.
Синтаксис следующий: docker inspect [опции] название или ID контейнера [название контейнера или образа].
По умолчанию отображает данные в формате JSON. Можно использовать дополнительные опции –format для смены формата данных. Опция -s показывает размер инспектируемых элементов.
rm
Команда удаления одного или нескольких образов Docker, найденных на диске вашего хостинга.
Синтаксис следующий: docker rm [опции] название и путь до образа.
Чтобы удалить образ Timeweb из системы, нужно ввести:
Эта команда позволяет выбирать только образы, которые хранятся локально. Удаленные элементы из репозитория удалить не получится.
Чтобы удалить все локальные образы, обнаруженные в системе, введем в терминал:
images
Команда показывает все образы Docker, которые расположены на жестком диске вашего сервера (или локально).
Вывод команды docker images выглядит так:
Изучаем Docker, часть 5: команды
Сегодняшняя часть цикла материалов по Docker, перевод которого мы публикуем, посвящена командам Docker. Документация Docker содержит подробнейшее описание великого множества команд, но тот, кто только начинает работу с этой платформой, может в них и потеряться, поэтому здесь приведены почти два десятка самых важных команд для работы с Docker. Продолжая сложившуюся традицию, мы сравним команды с россыпью ягод.
Обзор
Давайте вспомним о том, что образы Docker создают на основе файлов Dockerfile, описывающих всё то, что нужно для сборки образов. Кроме того, не будем забывать и о том, что контейнер — это образ Docker, вызванный к жизни. Для того чтобы эффективно пользоваться командами Docker, в первую очередь нужно выяснить — с чем вы имеете дело — с образом или с контейнером. Если подумать об образах и контейнерах, то можно понять, что образ Docker может либо существовать, либо не существовать. То же самое можно сказать и о контейнерах Docker. Существующий контейнер Docker, кроме того, может пребывать либо в работающем, либо в неработающем состоянии.
После того, как вы выяснили, с чем именно вам нужно работать, вы можете найти подходящую команду.
Общие сведения о командах Docker
Вот кое-что, о чём полезно знать тем, кто хочет работать с Docker:
Цель этого материала заключается в том, чтобы дать вам общие сведения о командах Docker. Так вы, имея общее представление о них и зная о возможностях платформы, доступных благодаря этим командам, сможете, при необходимости, найти подробные сведения о них. Команды, о которых пойдёт речь, испытаны на ОС семейства Linux с использованием движка Docker версии 18.09.1 и API версии 1.39.
Примечание о командах, поддерживаемых Docker CLI 1.13
Сначала мы посмотрим на команды, предназначенные для управления контейнерами, затем обсудим управление образами.
Команды для управления контейнерами
Общая схема команд для управления контейнерами выглядит так:
Вот команды, которые могут быть подставлены туда, где мы использовали my_command :
Команды для управления образами
Для управления образами используются команды, которые выглядят так:
Вот некоторые из команд этой группы:
Разные команды
Контейнеры
▍Начало существования контейнера
Вот команда для создания контейнера из образа:
После того, как контейнер создан, его можно запустить следующей командой:
Теперь взглянем на команду, которая позволяет создать и запустить контейнер:
Эта команда тоже способна принимать множество аргументов командной строки. Рассмотрим некоторые из них на примере такой конструкции:
Рассмотрим ещё некоторые примеры команды run :
Вот ещё один пример работы с командой run :
▍Проверка состояния контейнера
Если у вас имеются запущенные контейнеры Docker и вы хотите узнать о том, что это за контейнеры, вам понадобится вывести их список. Сделать это можно такой командой:
Эта команда выводит список выполняющихся контейнеров и снабжает этот список некоторыми полезными сведениями о них. Вот ещё один пример этой команды:
Вот команда, которая выводит подробные сведения о контейнере:
Вот команда, выводящая логи контейнера:
▍Завершение работы контейнера
Иногда работающий контейнер надо остановить. Для этого используется такая команда:
Она позволяет останавливать работающие контейнеры, позволяя им корректно завершить работу. У контейнера есть, по умолчанию, 10 секунд, на то, чтобы завершить работу.
Если же контейнер нужно остановить быстро, не заботясь о корректном завершении его работы, можно воспользоваться такой командой:
Вот команда, которая позволяет быстро остановить все работающие контейнеры:
Для удаления остановленного контейнера можно воспользоваться такой командой:
Вот команда, которая позволяет удалить все контейнеры, которые на момент вызова этой команды не выполняются:
Поговорим теперь о командах, используемых для работы с образами, с теми самыми шаблонами, из которых создают контейнеры.
Образы
▍Создание образов
Вот команда, которая позволяет собирать образы Docker:
Точка в конце команды указывает на то, что образ надо собрать с использованием файла Dockerfile, находящегося в текущей рабочей директории.
После того, как образ собран, его можно отправить в удалённый реестр. Благодаря этому им смогут воспользоваться другие люди, его можно будет загрузить и запустить на другом компьютере. Предположим, вы хотите использовать Docker Hub. Если так — вам понадобится завести там учётную запись. Пользоваться этим ресурсом можно бесплатно.
После того, как вы зарегистрируетесь на Docker Hub, вам нужно войти в систему. И хотя команда, которая для этого используется, напрямую к командам, предназначенным для работы с образами, не относится, её полезно будет рассмотреть именно здесь. Речь идёт о следующей команде:
Она позволяет войти в учётную запись на Docker Hub. Для входа в систему вам понадобится ввести имя пользователя и пароль.
После входа в систему можно будет отправлять образы в реестр. Делается это так:
Теперь, когда у вас наберётся несколько образов, вы можете их исследовать с помощью специальных команд.
▍Исследование образов
Вот команда, которая выводит список образов, выводя, в том числе, и сведения об их размере:
Следующая команда позволяет вывести сведения о промежуточных образах, входящих в состав образа, в частности — данные об их размерах и о том, как они были созданы:
Вот команда, которая выводит подробные сведения об образе, в том числе — данные о слоях, из которых состоит образ:
Если вы создадите очень много образов, может случиться так, что некоторые из них понадобится удалить.
▍Удаление образов
Вот команда, которая позволяет удалить указанный образ:
Если образ хранится в удалённом репозитории, он оттуда удалён не будет.
Вот команда, которая позволяет удалить все локальные образы:
Пользоваться этой командой стоит с осторожностью, но надо заметить, что при её использовании образы, хранящиеся в удалённом репозитории, удалены не будут. В этом заключается одно из преимуществ хранения образов в репозиториях.
Мы рассмотрели основные команды, используемые для управления контейнерами и образами. Поговорим теперь ещё о некоторых командах.
Разные команды
Вот команда, которая выводит сведения о версиях клиента и сервера Docker:
Эта, уже известная вам команда, применяется для входа в реестр Docker:
Такая команда позволяет удалить неиспользуемые контейнеры, сети и образы, которым не назначено имя и тег:
Вот пример её использования:
Итоги
В этом материале мы рассмотрели полезные команды Docker. Если вы только начинаете работать с Docker, то вам стоит обратить внимание на три следующих важнейших команды:
Создание и запуск контейнера:
Отправка образа в удалённый репозиторий:
В следующий раз мы поговорим о работе с данными в Docker.
Уважаемые читатели! Если вы работаете с Docker, то у вас, наверняка, есть собственный список часто используемых команд. Если это так — просим вас этим списком поделиться.