docker параметры запуска контейнера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Источник

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

Технология Docker набирает всё большую популярность среди разработчиков и DevOps-специалистов в наши дни, поскольку позволяет без особого труда настроить различные окружения один раз, а затем воспроизводить их на, казалось бы, совсем не совместимом оборудовании. Но начнём мы наш цикл статей о Docker с азов.

В сегодняшней статье мы поговорим о создании контейнеров и, соответственно, об их запуске. В Docker контейнер представляет собой окружение для выполнения какого-либо одного процесса. Это изолированная среда, в которой есть всё необходимое для выполнения нужного процесса, и нет ничего лишнего. Создание контейнера Docker выполняется в момент его запуска, и эти процессы запускаются с помощью команды docker run. Давайте сначала рассмотрим её синтаксис и опции.

Синтаксис и опции docker run

Синтаксис команды docker run похож на синтаксис других команд Linux и выглядит следующим образом:

$ docker run опции образ команда

Утилите обязательно надо передать образ, на основе которого будет создан контейнер. Образ может быть локальным или указывать на образ, который надо загрузить из сети. Мы рассмотрим это в примерах ниже. Опции позволяют настроить контейнер и параметры его запуска более детально. Сама команда позволяет переопределить программу, которая выполняется после запуска контейнера. Например, выполнив /bin/bash, вы можете подключится к самому контейнеру.

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

Это основные опции, которые мы будем использовать в этой статье, а теперь давайте рассмотрим на примерах, как создать контейнер Docker в Linux.

Создание контейнера Docker

1. Обычный контейнер

Чтобы создать и запустить контейнер с параметрами, заданными в образе по умолчанию, просто запустите команду без параметров. Давайте воспользуемся контейнером hello-world, который как раз для этого и предназначен:

docker run hello-world

После запуска контейнера Docker будет выведено сообщение с приветствием, и процесс в контейнере завершится.

Для поиска уже готовых образов для контейнеров можно использовать веб-сайт DockerHub. Здесь есть образы для большинства дистрибутивов и системных сервисов, таких, как Nginx, Apache, PHP-FPM, PhpMyAdmin и многих других.

2. Подключение к контейнеру

Образ Ubuntu 18.04, на основе которого мы создали контейнер выше, не содержит команды, которая бы постоянно выполнялась, поэтому если вы попытаетесь подключится к нему с помощью команды docker exec, то получите ошибку: You cannot attach to a stopped container, start it first:

docker attach Ubuntu1804

Так происходит потому, что окружение не может работать без основного процесса, для которого и создан контейнер. Пока работает процесс, будет работать и контейнер. Как только процесс завершён, контейнер завершается, и созданный нами ранее контейнер полностью бесполезен. Вы не сможете к нему подключится, потому что он будет падать сразу же после старта, а к упавшему контейнеру подключится нельзя. Его можно удалить:

docker rm Ubuntu1804

А нам надо создать контейнер с командой, которая будет выполняться. Для этого просто передайте команду после имени образа, например /bin/bash. Чтобы контейнер был доступен интерактивно, создавайте его с опциями -i и -t:

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

3. Переменные окружения

Очень часто для изменения настроек контейнера используются переменные окружения. Вы задаёте какую-нибудь переменную окружения, а затем её значение используется вашей программой в самом контейнере для выполнения различных действий. Для задания переменных окружения используется опция -e. Запуск контейнера Docker:

4. Монтирование папок и хранилищ

/test_docker в контейнер:

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

Читайте также:  Катастрофа самолета во сне к чему

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

docker volume list

5. Порты контейнера

Если вам нужно получить доступ к какому-либо сервису контейнера по порту, например к веб-интерфейсу, этот порт надо пробросить в хост-систему. Для этого используется опция -p. Давайте установим Nginx и пробросим его порт в хост-систему:

6. Связывание контейнеров

Связывание контейнеров позволяет настроить взаимодействие между ними. Связанный контейнер будет доступен по сети по его имени. Соответствующая строчка будет автоматически добавлена в файл /etc/hosts контейнера. Для связывания используется опция —link. Чтобы закрепить знания, полученные выше, давайте создадим контейнер с базой данных MySQL, а затем свяжем его с PhpMyAdmin.

Затем создаём контейнер с PhpMyAdmin для доступа к этой базе данных и связываем с ним контейнер MySQL под именем db:

Также здесь мы пробрасываем порт 80 в хост-систему, чтобы получить доступ к веб-интерфейсу. Теперь можно проверять в браузере. Всё работает.

7. Сеть для контейнеров

Контейнеры можно не связывать. Если надо объединить три и больше контейнеров между собой, то куда удобнее сразу связать их в одну общую сеть, чем создавать множество подключений для каждого из этих контейнеров. Все объекты в одной сети будут иметь доступ к друг другу по их имени. Сначала необходимо создать сеть:

Посмотреть список созданных сетей можно командой:

docker network list

Теперь можно её использовать. Объединим с помощью сети наш MySQL- и PhpMyAdmin-сервера. Для этого надо их остановить и удалить:

docker stop MySQL
docker stop PhpMyAdmin

docker rm MySQL
docker rm PhpMyadmin

А для PhpMyAdmin теперь надо передать хост, на котором расположена база данных в переменной окружения PMA_HOST:

Выводы

В этой статье мы рассмотрели, как запустить контейнер Docker и настроить его параметры. Как видите, Docker может быть очень полезным для быстрого разворачивания рабочих окружений. Но редко для этих целей используют саму команду docker run. Обычно используется инструмент docker-compose. Интересно ли вам прочитать об этом инструменте? Напишите в комментариях!

Источник

Основные команды 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, часть 2 – работа с контейнерами

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

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

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

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

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

-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. Она прерывает все процессы контейнера и останавливает его:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

Источник

Образовательный портал