Упражнение. Извлечение существующего образа Docker и его локальное развертывание
Хорошей отправной точкой для создания и запуска собственных образов Docker является получение существующего образа из Docker Hub и его локальный запуск на компьютере.
В качестве доказательства концепции для приложений компании вы решили попробовать запустить образ из Docker Hub. Выбранный образ реализует базовое веб-приложение .NET Core ASP.NET. После настройки процесса для развертывания образа Docker вы сможете запустить одно из веб-приложений своей организации с помощью Docker.
В этом упражнении вы извлечете образ из Docker Hub и запустите его. Вы изучите локальное состояние Docker, чтобы узнать, какие элементы развертываются. Наконец, вы удалите контейнер и образ с компьютера.
Внимание
Это упражнение выполняется на вашем компьютере, а не в Azure. Для продолжения упражнения нужна локальная установка Docker. Скачивание: https://docs.docker.com/desktop/install/windows-install/
Извлечение и запуск примера приложения из Docker Hub
Запустите Docker на компьютере.
Откройте окно командной строки на локальном компьютере.
Введите следующий код, чтобы извлечь образ приложения ASP.NET Sample из реестра Docker Hub. Этот образ содержит пример веб-приложения, разработанный корпорацией Майкрософт. Он основан на шаблоне ASP.NET по умолчанию, который доступен в Visual Studio.
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
Введите следующий код, чтобы убедиться, что образ был сохранен локально.
docker image ls
Вы увидите репозиторий с именем mcr.microsoft.com/dotnet/samples с тегом aspnetapp.
Введите следующий код, чтобы запустить пример приложения. Укажите флаг -d, чтобы запустить приложение в фоновом, а не интерактивном режиме. Флаг -p — сопоставить порт 8080 в контейнере, созданном локально с портом 8080. Этот параметр предназначен для предотвращения конфликтов с веб-приложениями, уже запущенными на компьютере. Эта команда возвращает длинный шестнадцатеричный идентификатор для экземпляра.
docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
Откройте веб-браузер и введите URL-адрес примера веб-приложения:
http://localhost:8080
Вы увидите страницу, похожую на следующий снимок экрана:
Изучение контейнера в локальном реестре Docker
В командной строке выполните следующую команду, чтобы просмотреть контейнеры, выполняемые в локальном реестре.
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 для контейнера.
Выполните следующую команду, чтобы прервать выполнение контейнера Docker, заменив заполнитель
<NAME>
именем в выходных данных предыдущей команды.docker container stop <NAME>
Выполните следующую команду, чтобы убедиться, что контейнер не работает. Флаг -a указывает, что команда отображает состояние всех контейнеров, а не только тех, которые выполняются. В выходных данных должен быть указан статус контейнера Exited (Работа завершена).
docker ps -a
В браузере обновите страницу для примера веб-приложения (http://localhost:8080/). Должен произойти сбой с ошибкой В подключении отказано.
Удаление контейнера и образа из локального реестра
Хотя контейнер был остановлен, он все еще загружен и может быть перезапущен. Выполните следующую команду в окне командной строки, чтобы удалить ее, заменив заполнитель
<NAME>
именем контейнера.docker container rm <NAME>
Убедитесь, что контейнер удален, выполнив следующую команду. Команда больше не должна выводить этот контейнер.
docker ps -a
Выведите список образов, доступных на компьютере. В выходных данных должен отобразиться репозиторий примеров.
docker image ls
Удалите образ из реестра.
docker image rm mcr.microsoft.com/dotnet/samples:aspnetapp
Выходные данные должны содержать множество элементов, которые были удалены и удалены. Снова выполните команду для вывода списка образов, чтобы убедиться, что образ для веб-приложения microsoft/dotnet-samples пропал.
docker image ls