Введение
Docker стал незаменимым инструментом для современной разработки программного обеспечения, позволяя разработчикам упаковывать и развертывать приложения последовательным и надежным способом. Образы Docker служат строительными блоками для контейнеризованных приложений, предоставляя предварительно настроенные среды, которые можно легко совместно использовать и развертывать.
В этой практической лабораторной работе вы узнаете, как искать образы Docker с помощью интерфейса командной строки Docker, извлекать (pull) эти образы на свой локальный компьютер и запускать контейнеры на основе этих образов. К концу этого руководства вы получите навыки, необходимые для поиска и использования образов Docker, которые соответствуют вашим конкретным требованиям проекта.
Проверка установки Docker
Прежде чем мы начнем поиск образов Docker, давайте сначала убедимся, что Docker правильно установлен и запущен в вашей системе.
Проверка установки Docker
Откройте окно терминала и выполните следующую команду, чтобы проверить, установлен ли Docker:
docker --version
Вы должны увидеть вывод, аналогичный этому:
Docker version 20.10.21, build baeda1f
Это подтверждает, что Docker установлен в вашей системе. Номер версии может отличаться в зависимости от вашей установки.
Проверка статуса службы Docker
Давайте также проверим, правильно ли работает служба Docker, выполнив:
sudo systemctl status docker
Вы должны увидеть вывод, указывающий на то, что служба Docker активна и запущена:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since...
Если по какой-либо причине Docker не запущен, вы можете запустить его с помощью:
sudo systemctl start docker
Понимание образов Docker
Образ Docker (Docker image) — это шаблон только для чтения, содержащий набор инструкций для создания контейнера. Вы можете думать об образе как о снимке или чертеже приложения вместе с его средой, зависимостями и конфигурацией.
Образы Docker:
- Многослойные (Layered): построены с использованием серии слоев, которые могут быть общими между образами
- Только для чтения (Read-only): не могут быть изменены после создания
- Именованные и помеченные (Tagged): идентифицируются по имени и необязательному тегу (например,
ubuntu:22.04)
На следующем шаге мы узнаем, как искать эти образы.
Поиск образов Docker
Docker Hub — это официальный публичный реестр образов Docker. Он содержит тысячи образов, включая официальные образы, поддерживаемые поставщиками программного обеспечения, и образы сообщества, созданные пользователями Docker.
Базовый поиск образов
Чтобы выполнить поиск образов Docker, используйте команду docker search, за которой следует поисковый запрос. Давайте выполним поиск образов Ubuntu:
docker search ubuntu
Вы увидите вывод, аналогичный этому:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14938 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 112 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 254 [OK]
...
Вывод показывает:
- NAME (ИМЯ): Имя образа
- DESCRIPTION (ОПИСАНИЕ): Краткое описание образа
- STARS (ЗВЕЗДЫ): Количество пользователей, которые отметили образ звездочкой (индикатор популярности)
- OFFICIAL (ОФИЦИАЛЬНЫЙ): Тег, указывающий на официальный образ, поддерживаемый поставщиком программного обеспечения
- AUTOMATED (АВТОМАТИЗИРОВАННЫЙ): Тег, указывающий на образ, созданный автоматизированным процессом
Фильтрация результатов поиска
Вы можете фильтровать результаты поиска, используя опцию --filter. Например, чтобы отобразить только официальные образы:
docker search --filter=is-official=true ubuntu
Чтобы найти образы как минимум со 100 звездами (популярные образы):
docker search --filter=stars=100 ubuntu
Вы также можете комбинировать несколько фильтров:
docker search --filter=is-official=true --filter=stars=100 nginx
Эта команда ищет официальные образы Nginx как минимум со 100 звездами.
Поиск конкретных версий
Команда docker search не отображает теги образов (версии), но вы можете найти их, выполнив следующие действия:
- Посетите веб-сайт Docker Hub (hub.docker.com)
- Используйте команду
docker image inspect(после извлечения образа)
Например, чтобы увидеть все доступные версии Ubuntu, посетите: https://hub.docker.com/_/ubuntu?tab=tags
Выбор подходящего образа
При выборе образа Docker учитывайте следующее:
- Официальные образы (Official images): Отдавайте предпочтение официальным образам, так как они поддерживаются поставщиком программного обеспечения.
- Популярные образы (Popular images): Более высокое количество звезд указывает на большее количество пользователей и, возможно, лучшее обслуживание.
- Недавние обновления (Recent updates): Проверьте, когда образ был обновлен в последний раз.
- Документация (Documentation): Ищите образы с хорошей документацией.
- Размер (Size): Учитывайте размер образа, так как меньшие образы загружаются быстрее.
Загрузка образов Docker
После того, как вы нашли образ, который хотите использовать, вы можете загрузить его на свой локальный компьютер с помощью команды docker pull.
Извлечение образа
Давайте извлечем официальный образ Ubuntu:
docker pull ubuntu
Вы увидите вывод, аналогичный:
Using default tag: latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
По умолчанию Docker извлекает тег latest. Чтобы извлечь определенную версию, добавьте тег:
docker pull ubuntu:20.04
Вы увидите вывод, показывающий ход загрузки для этой конкретной версии.
Список загруженных образов
Чтобы увидеть все загруженные образы, используйте:
docker images
Или новый формат команды:
docker image ls
Обе команды выдают один и тот же вывод:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1318b700e415 4 weeks ago 72.8MB
ubuntu 20.04 1318b700e415 4 weeks ago 72.8MB
Понимание тегов образов
Образы Docker идентифицируются по тегам. Формат тега обычно следующий:
repository:tag
Где:
- repository (репозиторий): Обычно в формате
username/image-nameили простоimage-nameдля официальных образов. - tag (тег): Указывает версию (например,
latest,20.04,3.9-alpine).
Если вы опустите тег, Docker предполагает, что вам нужен тег latest.
Получение сведений об образе
Чтобы просмотреть подробную информацию об образе, используйте:
docker image inspect ubuntu:latest
Эта команда отображает объект JSON со всеми метаданными образа, включая слои, конфигурацию и переменные среды.
Чтобы увидеть историю слоев образа:
docker history ubuntu:latest
Это показывает, как образ был построен, слой за слоем.
Запуск контейнеров из образов
Теперь, когда вы загрузили несколько образов Docker, давайте узнаем, как создавать и запускать контейнеры на основе этих образов.
Запуск базового контейнера
Чтобы запустить контейнер из образа, используйте команду docker run:
docker run ubuntu echo "Hello from Docker"
Эта команда:
- Создает новый контейнер на основе образа Ubuntu.
- Запускает команду
echo "Hello from Docker"внутри контейнера. - Завершает работу после завершения команды.
Вы должны увидеть вывод:
Hello from Docker
Запуск интерактивного контейнера
Чтобы взаимодействовать с контейнером, используйте флаги -it (интерактивный терминал):
docker run -it ubuntu bash
Это запускает оболочку bash внутри контейнера. Теперь вы фактически находитесь "внутри" контейнера и можете выполнять команды.
Попробуйте несколько команд:
ls
cat /etc/os-release
Чтобы выйти из контейнера, введите:
exit
Список запущенных контейнеров
Чтобы увидеть все запущенные контейнеры:
docker ps
Поскольку наши контейнеры завершали работу сразу после завершения, вы, возможно, не увидите никакого вывода. Чтобы увидеть все контейнеры, включая остановленные:
docker ps -a
Это показывает все контейнеры, их статус и время их создания/завершения.
Жизненный цикл контейнера
Контейнеры имеют жизненный цикл:
- Created (Создан): Контейнер создан, но не запущен.
- Running (Запущен): Контейнер в данный момент выполняется.
- Paused (Приостановлен): Выполнение контейнера приостановлено.
- Stopped (Остановлен): Контейнер завершил работу, но все еще существует.
- Removed (Удален): Контейнер удален.
Вы можете удалить остановленный контейнер с помощью:
docker rm <container_id>
Замените <container_id> на ID, отображаемый в выводе docker ps -a.
Чтобы автоматически удалить контейнер после его завершения, используйте флаг --rm:
docker run --rm ubuntu echo "This container will be removed after execution"
Запуск контейнера веб-сервера
Давайте попробуем что-нибудь более практичное, запустив веб-сервер Nginx:
docker pull nginx:alpine
Это извлекает облегченный образ Nginx на основе Alpine Linux.
Теперь запустите контейнер, который сопоставляет порт 8080 на вашем хосте с портом 80 в контейнере:
docker run -d -p 8080:80 --name my-nginx nginx:alpine
Эта команда:
-d: Запускает контейнер в detached mode (фоновый режим).-p 8080:80: Сопоставляет порт 8080 на вашем хосте с портом 80 в контейнере.--name my-nginx: Называет контейнер "my-nginx".
Теперь вы можете получить доступ к приветственной странице Nginx, перейдя по адресу http://localhost:8080 в веб-браузере или используя curl:
curl http://localhost:8080
Вы должны увидеть HTML-содержимое приветственной страницы Nginx.
Чтобы остановить и удалить этот контейнер:
docker stop my-nginx
docker rm my-nginx
Заключение
Поздравляем с завершением этой лабораторной работы по поиску и использованию образов Docker. В ходе этого руководства вы:
- Проверили установку Docker и поняли концепцию образов Docker.
- Узнали, как искать образы Docker с помощью команды
docker search. - Загрузили образы Docker на свой локальный компьютер с помощью
docker pull. - Просмотрели список и изучили свои локальные образы Docker.
- Создали и запустили контейнеры из этих образов, используя различные опции
docker run. - Поняли жизненный цикл контейнера и способы управления контейнерами.
Эти навыки составляют основу работы с Docker в ваших проектах разработки. Теперь вы можете искать, загружать и использовать образы Docker для создания контейнеризированных сред для ваших приложений.
Следующие шаги в вашем путешествии с Docker могут включать:
- Изучение создания собственных образов Docker с помощью Dockerfiles.
- Понимание работы с сетями Docker и сохранения данных (data persistence).
- Изучение Docker Compose для многоконтейнерных приложений.
- Погружение в оркестрацию контейнеров с помощью Kubernetes.
Продолжайте экспериментировать с различными образами Docker, чтобы открыть для себя обширную экосистему предварительно созданных контейнеров, доступных для ускорения вашего рабочего процесса разработки.



