Запуск контейнера: docker run и флаги

Главная команда Docker — docker run — и флаги, которые встречаются в 90% случаев.

docker run создаёт новый контейнер из образа и запускает его; поведение настраивают флагами.

Базовый синтаксис

docker run [флаги] ИМЯ_ОБРАЗА [команда]

Например, запустить веб-сервер nginx:

docker run nginx

Без флагов терминал «зависнет»: nginx работает на переднем плане и пишет логи в консоль. Чтобы вернуть управление, нужен фоновый режим.

-d — фоновый режим (detached)

Флаг -d запускает контейнер в фоне и сразу возвращает приглашение терминала, печатая длинный ID контейнера:

docker run -d nginx

Вывод:

3f9a1c2b7e0d4a6f8b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a

--name — понятное имя

По умолчанию Docker даёт контейнеру случайное имя вроде quirky_einstein. Лучше задать своё через --name — потом удобнее обращаться:

docker run -d --name my-web nginx

-p — проброс портов

Контейнер изолирован, и его порты снаружи не видны. Флаг -p ХОСТ:КОНТЕЙНЕР пробрасывает порт хоста на порт контейнера. nginx внутри слушает порт 80; пробросим его на 8080 хоста:

docker run -d --name my-web -p 8080:80 nginx

Теперь откройте в браузере http://localhost:8080 — увидите стартовую страницу nginx.

-it — интерактивный режим

Флаги -i (interactive) и -t (выделить терминал) обычно ставят вместе как -it, чтобы попасть внутрь контейнера в интерактивную оболочку:

docker run -it ubuntu bash

Вы окажетесь в bash внутри Ubuntu-контейнера. Команда exit завершит оболочку и остановит контейнер.

ФлагНазначение
-dзапустить в фоне (detached)
-itинтерактивный терминал внутри контейнера
--name ИМЯзадать понятное имя контейнеру
-p Х:Кпробросить порт хоста на порт контейнера
--rmудалить контейнер автоматически после остановки

Итог

  • docker run создаёт и запускает контейнер из образа.
  • -d отправляет в фон, -it даёт интерактивную оболочку.
  • --name задаёт имя, -p ХОСТ:КОНТЕЙНЕР открывает порт наружу.
Проверьте себя
1. Что делает флаг -d в команде docker run?
AУдаляет контейнер после остановки
BЗапускает контейнер в фоновом режиме
CВключает отладочный вывод
DСкачивает образ заново
2. Что означает -p 8080:80 при запуске контейнера?
AЗапустить 8080 контейнеров на порту 80
BПробросить порт 8080 хоста на порт 80 контейнера
CОграничить память до 8080 мегабайт
DПробросить порт 80 хоста на порт 8080 контейнера
3. Зачем обычно используют флаги -it вместе?
AЧтобы удалить образ
BЧтобы войти в интерактивную оболочку внутри контейнера
CЧтобы запустить контейнер в фоне
DЧтобы ограничить контейнер по CPU
Поддержать проект