Как искать образы Docker

DockerBeginner
Практиковаться сейчас

Введение

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 не отображает теги образов (версии), но вы можете найти их, выполнив следующие действия:

  1. Посетите веб-сайт Docker Hub (hub.docker.com)
  2. Используйте команду docker image inspect (после извлечения образа)

Например, чтобы увидеть все доступные версии Ubuntu, посетите: https://hub.docker.com/_/ubuntu?tab=tags

Выбор подходящего образа

При выборе образа Docker учитывайте следующее:

  1. Официальные образы (Official images): Отдавайте предпочтение официальным образам, так как они поддерживаются поставщиком программного обеспечения.
  2. Популярные образы (Popular images): Более высокое количество звезд указывает на большее количество пользователей и, возможно, лучшее обслуживание.
  3. Недавние обновления (Recent updates): Проверьте, когда образ был обновлен в последний раз.
  4. Документация (Documentation): Ищите образы с хорошей документацией.
  5. Размер (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"

Эта команда:

  1. Создает новый контейнер на основе образа Ubuntu.
  2. Запускает команду echo "Hello from Docker" внутри контейнера.
  3. Завершает работу после завершения команды.

Вы должны увидеть вывод:

Hello from Docker

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

Чтобы взаимодействовать с контейнером, используйте флаги -it (интерактивный терминал):

docker run -it ubuntu bash

Это запускает оболочку bash внутри контейнера. Теперь вы фактически находитесь "внутри" контейнера и можете выполнять команды.

Попробуйте несколько команд:

ls
cat /etc/os-release

Чтобы выйти из контейнера, введите:

exit

Список запущенных контейнеров

Чтобы увидеть все запущенные контейнеры:

docker ps

Поскольку наши контейнеры завершали работу сразу после завершения, вы, возможно, не увидите никакого вывода. Чтобы увидеть все контейнеры, включая остановленные:

docker ps -a

Это показывает все контейнеры, их статус и время их создания/завершения.

Жизненный цикл контейнера

Контейнеры имеют жизненный цикл:

  1. Created (Создан): Контейнер создан, но не запущен.
  2. Running (Запущен): Контейнер в данный момент выполняется.
  3. Paused (Приостановлен): Выполнение контейнера приостановлено.
  4. Stopped (Остановлен): Контейнер завершил работу, но все еще существует.
  5. 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. В ходе этого руководства вы:

  1. Проверили установку Docker и поняли концепцию образов Docker.
  2. Узнали, как искать образы Docker с помощью команды docker search.
  3. Загрузили образы Docker на свой локальный компьютер с помощью docker pull.
  4. Просмотрели список и изучили свои локальные образы Docker.
  5. Создали и запустили контейнеры из этих образов, используя различные опции docker run.
  6. Поняли жизненный цикл контейнера и способы управления контейнерами.

Эти навыки составляют основу работы с Docker в ваших проектах разработки. Теперь вы можете искать, загружать и использовать образы Docker для создания контейнеризированных сред для ваших приложений.

Следующие шаги в вашем путешествии с Docker могут включать:

  • Изучение создания собственных образов Docker с помощью Dockerfiles.
  • Понимание работы с сетями Docker и сохранения данных (data persistence).
  • Изучение Docker Compose для многоконтейнерных приложений.
  • Погружение в оркестрацию контейнеров с помощью Kubernetes.

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