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

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

Введение

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

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

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

Настройка среды Docker

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

  1. Установите Docker, выполнив следующие команды в терминале:

    sudo apt update
    sudo apt install docker.io
    

    Первая команда обновляет списки пакетов, чтобы убедиться, что вы получаете последнюю версию Docker, а вторая команда устанавливает сам Docker. Префикс sudo предоставляет административные привилегии, необходимые для установки.

  2. После установки Docker перезапустите службу Docker, чтобы работающий демон соответствовал только что установленной версии:

    sudo systemctl restart docker
    

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

  3. Убедитесь, что Docker работает успешно:

    sudo systemctl status docker
    

    Эта команда проверяет, активен ли Docker и работает ли он должным образом. Вы должны увидеть вывод со статусом active (running), подтверждающий, что ваша среда Docker готова. Если вы видите inactive или какие-либо сообщения об ошибках, выполните sudo systemctl restart docker еще раз перед продолжением.

  4. Чтобы иметь возможность выполнять команды Docker без использования sudo каждый раз, добавьте своего пользователя в группу docker:

    sudo usermod -aG docker $USER
    

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

Запуск контейнера Hello-World

Теперь, когда ваша среда настроена, вы запустите свой первый контейнер Docker — простой пример "hello-world". Считайте это демонстрацией вашего первого артефакта, чтобы убедиться, что новая технология контейнеров работает как ожидалось.

  1. Загрузите образ "hello-world" из Docker Hub:

    sudo docker pull hello-world
    

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

  2. Запустите контейнер "hello-world":

    sudo docker run hello-world
    

    Эта команда создает и запускает контейнер из образа hello-world. Контейнер выполняет простую программу, которая выводит сообщение, а затем завершает работу. В нашем викторианском сценарии это эквивалентно краткой демонстрации вашего первого артефакта, чтобы убедиться, что ваша новая система контейнеров работает должным образом. Если Docker сообщает о несоответствии версий API клиента или демона, перезапустите службу с помощью sudo systemctl restart docker, а затем повторите команду.

  3. Проверьте вывод, чтобы убедиться, что контейнер успешно отработал. Вы должны увидеть сообщение, начинающееся с "Hello from Docker!", за которым следует пояснительный текст. Это подтверждает, что:

    • Docker установлен правильно
    • Ваша система может успешно создавать контейнеры
    • Вы можете загружать образы из Docker Hub
  4. Чтобы увидеть список всех контейнеров (включая те, которые завершили работу):

    sudo docker ps -a
    

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

Развертывание веб-сервера Nginx

На этом этапе вы развернете веб-сервер Nginx с помощью контейнера Docker. В нашем викторианском сценарии это означает установку элегантной витрины (Nginx) для демонстрации ваших самых ценных антиквариатов (веб-контента) посетителям.

  1. Загрузите образ Nginx из Docker Hub:

    sudo docker pull nginx
    

    Эта команда загружает официальный образ Nginx из Docker Hub. Nginx — это популярный веб-сервер, который может обслуживать HTML-контент. Это эквивалентно приобретению изысканной витрины для вашей коллекции антиквариата.

  2. Запустите контейнер Nginx в фоновом режиме (detached mode), сопоставив порт 80 на хосте с портом 80 в контейнере:

    sudo docker run -d -p 80:80 nginx
    

    Разберем эту команду:

    • run: создает и запускает новый контейнер
    • -d: запускает контейнер в фоновом режиме
    • -p 80:80: сопоставляет порт 80 на вашей хост-машине с портом 80 в контейнере, позволяя веб-трафику достигать сервера Nginx
    • nginx: указывает используемый образ

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

  3. Убедитесь, что ваш контейнер Nginx запущен:

    sudo docker ps
    

    Эта команда показывает все запущенные контейнеры. Вы должны увидеть свой контейнер Nginx в списке, что означает, что он активно работает.

  4. Добавьте сопоставление веб-сервиса из верхнего меню лабораторной работы и установите сопоставление портов на 80. Если веб-сервер Nginx запущен успешно, среда лабораторной работы автоматически перейдет по случайному URL-адресу, и вы должны увидеть приветственную страницу Nginx по умолчанию.

  5. Дополнительно: если вы хотите получить доступ к серверу Nginx из своего браузера вручную, вы можете перейти по адресу http://localhost или по IP-адресу вашей машины.

  6. Если вы столкнулись с какими-либо проблемами, вы можете проверить логи контейнера:

    sudo docker logs <container_id>
    

    Замените <container_id> на ID вашего контейнера Nginx, который можно найти в выводе команды docker ps.

Резюме

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

Вы узнали, как:

  • Настраивать среду Docker
  • Загружать образы из Docker Hub
  • Запускать контейнеры как в интерактивном, так и в фоновом режиме
  • Открывать порты контейнеров для хост-машины
  • Проверять статус контейнера

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

Способность упаковывать приложения вместе с их зависимостями в переносимые контейнеры революционизирует способы развертывания и управления программным обеспечением, подобно тому, как стандартизированные транспортные контейнеры изменили мировую торговлю. Как сказал бы наш викторианский торговец антиквариатом: «Эти чудесные контейнеры Docker произведут революцию в том, как мы представляем наши сокровища миру!»