Запуск контейнера: 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 ХОСТ:КОНТЕЙНЕРоткрывает порт наружу.