Упражнение. Извлечение существующего образа Docker и его локальное развертывание

Завершено

Хорошей отправной точкой для создания и запуска собственных образов Docker является получение существующего образа из Docker Hub и его локальный запуск на компьютере.

В рамках подтверждения концепции для приложений организации вы решаете попробовать запустить пример образа из Docker Hub. Выбранный образ реализует базовое веб-приложение .NET Core ASP.NET. После настройки процесса для развертывания образа Docker вы сможете запустить одно из веб-приложений своей организации с помощью Docker.

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

Важно!

Это упражнение выполняется на вашем компьютере, а не в Azure. Для продолжения упражнения нужна локальная установка Docker. Скачивание: https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Извлечение и запуск примера приложения из Docker Hub

  1. Запустите Docker на компьютере.

  2. Откройте окно командной строки на локальном компьютере.

  3. Введите следующий код, чтобы извлечь образ приложения ASP.NET Sample из реестра Docker Hub. Этот образ содержит пример веб-приложения, разработанный корпорацией Майкрософт. Он основан на шаблоне ASP.NET по умолчанию, который доступен в Visual Studio.

    docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
    
  4. Введите следующий код, чтобы убедиться, что образ был сохранен локально.

    docker image ls
    

    Вы увидите репозиторий с именем mcr.microsoft.com/dotnet/samples с тегом aspnetapp.

  5. Введите следующий код, чтобы запустить пример приложения. Укажите флаг -d, чтобы запустить приложение в фоновом, а не интерактивном режиме. Флаг -p — сопоставить порт 8080 в контейнере, созданном локально с портом 8080. Этот параметр предназначен для предотвращения конфликтов с веб-приложениями, уже запущенными на компьютере. Эта команда возвращает длинный шестнадцатеричный идентификатор для экземпляра.

    docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
    
  6. Откройте веб-браузер и введите URL-адрес примера веб-приложения: http://localhost:8080 Вы увидите страницу, похожую на следующий снимок экрана:

    Screenshot of the sample web app running in a browser.

Изучение контейнера в локальном реестре Docker

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

    docker ps
    

    Результат должен выглядеть следующим образом:

    CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS          PORTS                  NAMES
    96c851831ade   mcr.microsoft.com/dotnet/samples:aspnetapp   "dotnet aspnetapp.dll"   22 minutes ago   Up 22 minutes   0.0.0.0:8080->80/tcp   eager_montalcini
    

    Поле COMMAND указывает контейнер, запущенный с помощью команды dotnet aspnetapp.dll. Эта команда вызывает среду выполнения .NET Core, чтобы запустить код в aspnetapp.dll (код для примера веб-приложения). Поле PORT указывает, что порт 8080 на изображении сопоставлен с портом 8080 на компьютере. Поле STATUS указывает, что приложение по-прежнему выполняется. Запишите значение NAME для контейнера.

  2. Выполните следующую команду, чтобы прервать выполнение контейнера Docker, заменив заполнитель <NAME> именем в выходных данных предыдущей команды.

    docker container stop <NAME>
    
  3. Выполните следующую команду, чтобы убедиться, что контейнер не работает. Флаг -a указывает, что команда отображает состояние всех контейнеров, а не только тех, которые выполняются. В выходных данных должен быть указан статус контейнера Exited (Работа завершена).

    docker ps -a
    
  4. В браузере обновите страницу для примера веб-приложения (http://localhost:8080/). Должен произойти сбой с ошибкой В подключении отказано.

Удаление контейнера и образа из локального реестра

  1. Хотя контейнер был остановлен, он все еще загружен и может быть перезапущен. Выполните следующую команду в окне командной строки, чтобы удалить ее, заменив заполнитель <NAME> именем контейнера.

    docker container rm <NAME>
    
  2. Убедитесь, что контейнер удален, выполнив следующую команду. Команда больше не должна выводить этот контейнер.

    docker ps -a
    
  3. Выведите список образов, доступных на компьютере. В выходных данных должен отобразиться репозиторий примеров.

    docker image ls
    
  4. Удалите образ из реестра.

    docker image rm mcr.microsoft.com/dotnet/samples:aspnetapp
    
  5. В выходных данных должен быть указан целый ряд элементов, которые не были помечены и удалены. Снова выполните команду для вывода списка образов, чтобы убедиться, что образ для веб-приложения microsoft/dotnet-samples пропал.

    docker image ls