Как работают образы
Образы (или имиджи) — готовые решения с определенным функционалом. Образ неизменяем, его можно скачать из регистра (о регистрах — ниже). На основе образа создается контейнер. Образ — это готовый проект с определенным функционалом, а контейнер — проект, созданный на его основе.
Например, для проекта на Python без Docker нужно установить Python, среду выполнения, создать проект, подключить Python, прописать код и запустить. С Docker:
- Устанавливаем Docker.
- Скачиваем образ Python командой docker pull. Это готовый функционал.
- Создаем проект на основе образа, прописываем код на Python — он выполняется корректно, так как весь необходимый функционал уже скачан.
Образы предоставляют готовый функционал для создания проектов. Проект, возможно, с множеством файлов и образов, развивается как контейнер — упакованное приложение, которое можно запустить на любой системе, так как оно содержит всё необходимое: образы с функционалом и ваш код. В дальнейшем мы будем скачивать образы, получать функционал и строить приложения. Можно использовать Java, Python, WordPress — всё будет работать внутри одного контейнера благодаря готовым образам.
Функционирование Docker
Docker состоит из трёх компонентов:
- Клиент: выполняет команды.
- Docker Host: принимает и обрабатывает команды от клиента.
- Регистры: хранилища образов.
Например, команда docker pull скачивает образ. Docker-демон обрабатывает запрос, находит образ в регистре (например, Docker Hub) и скачивает его. Команда docker run скачивает и запускает образ как приложение (контейнер).
Docker Hub и работа с образами
Docker Hub — регистр образов. Необходимо зарегистрироваться. На вкладке Explorer много образов: Python, PostgreSQL и др. Можно установить нужную технологию внутри контейнера.
Вместо поиска через Docker Hub, сейчас будем использовать терминал (в следующем уроке — Dockerfile). Для установки образа используем команду docker pull <имя_образа>.
Например, для проверки имеющихся образов, вводим docker images. Чтобы добавить образ Java, пишем: docker pull openjdk. После скачивания, команда docker images покажет два образа: openjdk и тот, что был установлен ранее. Скачанный образ пока не используется.
Запуск и управление контейнерами
Чтобы запустить образ, используется команда docker run <имя_образа>. При запуске автоматически создается контейнер. Команда docker ps -a показывает все контейнеры (запущенные и остановленные).
Образы предоставляют функционал для создания контейнеров.
Образ можно запустить в интерактивном режиме (docker run -it <имя_образа>). Например, для запуска Java в интерактивном режиме: docker run -it <имя_образа>. Можно указать имя контейнеру с помощью опции —name <имя>. Например: docker run -it —name myjava openjdk.
Для выхода из интерактивного режима: Ctrl+D.
Запущенный контейнер можно остановить (docker stop <имя_контейнера>), поставить на паузу (docker pause <имя_контейнера>), снять с паузы (docker unpause <имя_контейнера>) или удалить (docker kill <имя_контейнера>). docker stop — корректное завершение, docker kill — принудительное.
Установка и использование Ubuntu
Для создания полноценного сервера может понадобиться установить полноценную систему, например, Ubuntu. В проект можно добавить Ubuntu, язык программирования (например, C++), сервер (Apache, Nginx и т.д.), и другие образы. Всё это создаст готовый проект (контейнер).
Для установки Ubuntu: docker pull ubuntu. Для запуска в интерактивном режиме с именем myubuntu: docker run -it —name myubuntu ubuntu. Внутри контейнера можно выполнять команды Linux (например, ls, cd, создание файлов).
Мы разобрались с основными понятиями Docker: образами и контейнерами, научились скачивать образы, запускать и управлять контейнерами. Теперь вы можете создавать собственные проекты на основе готовых образов и управлять ими эффективно.