логотип PurpleSchool
логотип PurpleSchool

Запуск контейнеров (run) в Docker

Автор

Олег Марков

Введение

Добро пожаловать в мир Docker! Если вы здесь, значит, вы хотите научиться запускать контейнеры в Docker. Docker стал стандартом для контейнеризации, предоставляя разработчикам и системным администраторам мощный инструмент для создания и выполнения контейнеров. Команда docker run - одна из самых базовых и одновременно многофункциональных команд в Docker, которую стоит освоить в первую очередь.

Контейнеры представляют собой легковесные виртуальные окружения, которые позволяют изолировать процессы и приложения друг от друга. С помощью Docker мы можем запускать контейнеры, управлять ими, искать и загружать образы из Docker Hub или других репозиториев. Сегодня мы сфокусируемся на запуске контейнеров с помощью команды docker run.

Как запустить контейнер с помощью docker run

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

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Расшифруем это. Прежде всего, IMAGE - это образ, из которого запускается контейнер. Docker Hub предлагает множество предварительно созданных образов для различных нужд, но вы также можете создать свои собственные.

Простой запуск контейнера

Давайте начнем с простого примера. Вот как можно запустить контейнер из популярного образа hello-world:

docker run hello-world

Этот код загружает образ hello-world из Docker Hub (если он еще не загружен) и запускает его. В результате вы должны увидеть приветственное сообщение, информирующее о том, что Docker установлен и работает корректно.

Основные опции docker run

docker run предоставляет множество опций для управления контейнерами. Давайте рассмотрим наиболее часто используемые из них.

-d или --detach

Если вы хотите запустить контейнер в фоновом режиме, используйте флаг -d. Это удобно, если вы не хотите, чтобы ваш терминал был занят.

docker run -d nginx

С правым вызовом выше контейнер запустится в фоновом режиме, и вы сможете продолжать использовать терминал. Nginx начнет работать внутри контейнера.

-p или --publish

Вы можете сопоставить порты вашего локального компьютера с портами внутри контейнера с помощью -p. Это полезно для проброса портов, чтобы ваш сервис внутри контейнера был доступен извне.

docker run -d -p 8080:80 nginx

Как вы видите, запросы на http://localhost:8080 будут перенаправлены на порт 80 внутри контейнера, где работает Nginx.

-e или --env

Иногда вам потребуется передать переменные окружения в контейнер. Это можно сделать с помощью опции -e.

docker run -e MY_ENV_VAR=my_value ubuntu env

В данном примере мы запускаем образ ubuntu и используем команду env для вывода всех переменных окружения. Вы увидите MY_ENV_VAR среди них с установленным значением my_value.

--name

Вы можете дать своему контейнеру уникальное имя. Это удобно для последующего обращения к контейнеру.

docker run --name my_nginx -d nginx

Теперь ваш контейнер называется my_nginx, и вы можете ссылаться на него по имени.

Продвинутые возможности

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

Иногда вы хотите взаимодействовать с контейнером напрямую. Это можно сделать, запустив его в интерактивном режиме с флагом -it.

docker run -it ubuntu /bin/bash

Теперь вы находитесь в интерактивной командной строке внутри вашего контейнера ubuntu. Это удобно для выполнения ручных проверок или отладки.

Ограничение ресурсов

Docker позволяет задавать лимиты на использование ресурсов. Например, чтобы ограничить память до 512 MB, используйте флаг --memory.

docker run -d --memory="512m" nginx

Это полезная функция для предотвращения потребления приложения больше ресурсов, чем вы хотите ему выделить.

Заключение

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

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile