Прочитать на английском

Поделиться через


Запуск приложения ASP.NET Core в контейнерах Docker

Примечание

Это не последняя версия этой статьи. В текущем выпуске см. версию .NET 9 этой статьи.

Предупреждение

Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см. версию .NET 9 этой статьи.

Важно!

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

В текущем выпуске см. версию .NET 9 этой статьи.

В этой статье показано, как запустить приложение ASP.NET Core в контейнерах Docker.

Выпуск Windows Home не поддерживает Hyper-V, а Hyper-V необходим для Docker.

Сведения о контейнеризации приложения .NET см. в статье dotnet publish

Образы Docker для ASP.NET Core

Для работы с этим руководством следует скачать пример приложения ASP.NET Core и запустить его в контейнерах Docker. Этот пример поддерживается в контейнерах Linux и Windows.

В примере Dockerfile используется функция сборки Docker с несколькими этапами для сборки и запуска в разных контейнерах. Контейнеры для сборки и выполнения создаются на основе образов, предоставленных корпорацией Майкрософт в Docker Hub:

  • dotnet/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

Предварительные требования

загрузка примера приложения;

Локальный запуск приложения

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните следующую команду, чтобы собрать и запустить приложение локально:

    dotnet run
    
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

  • Нажмите сочетание клавиш CTRL+C в командной строке, чтобы остановить приложение.

Запуск в контейнере Linux или контейнере Windows

  • Чтобы запустить в контейнере Linux, щелкните правой кнопкой мыши значок клиента Docker в области уведомлений системы и выберите переключиться на контейнеры Linux.

  • Чтобы запустить в контейнере Windows, щелкните правой кнопкой мыши значок Docker-клиента в системном трее и выберите переключиться на контейнеры Windows.

  • Перейдите в папку Dockerfile в dotnet-docker/samples/aspnetapp.

  • Выполните следующие команды, чтобы собрать и запустить пример в Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Команда build выполняет следующее:

    • присваивает образу имя aspnetapp;
    • ищет файл Dockerfile в текущей папке (точка в конце).

    Аргументы команды run:

    • выделяет псевдотерминал и сохраняет его открытым, даже если он не подключен. (действует так же, как --interactive --tty);
    • автоматически удаляет контейнер при завершении работы;
    • Настроить перенаправление <port> на локальную машину на порт 8080 в контейнере.
    • присваивает контейнеру имя aspnetcore_sample;
    • Укажите образ aspnetapp.
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

локальная сборка и развертывание.

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

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните команду dotnet publish:

    dotnet publish -c Release -o published
    

    Эта команда выполняет следующее:

    • собирает приложение в режиме выпуска (по умолчанию используется режим отладки);
    • Создайте ресурсы в опубликованной папке.
  • Запустите приложение.

    • Виндоус:

      dotnet published\aspnetapp.dll
      
    • Линукс:

      dotnet published/aspnetapp.dll
      
  • Перейдите к http://localhost:<port>, чтобы просмотреть домашнюю страницу.

Чтобы использовать приложение, опубликованное вручную в контейнере Docker, создайте файл Dockerfile и используйте docker build . команду для создания образа.

FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. *.csproj Если файлы не изменились с момента docker build последнего запуска команды, dotnet restore команда не должна выполняться снова. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

Дополнительные ресурсы

Следующие шаги

Репозиторий Git помимо примера приложения содержит и документацию. Общие сведения о ресурсах, доступных в репозитории, см. в файле README. Особый интерес представляют сведения о реализации протокола HTTPS:

Образы Docker для ASP.NET Core

Для работы с этим руководством следует скачать пример приложения ASP.NET Core и запустить его в контейнерах Docker. Этот пример поддерживается в контейнерах Linux и Windows.

В примере Dockerfile используется функция сборки Docker с несколькими этапами для сборки и запуска в разных контейнерах. Контейнеры для сборки и выполнения создаются на основе образов, предоставленных корпорацией Майкрософт в Docker Hub:

  • dotnet/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

Предварительные требования

загрузка примера приложения;

Локальный запуск приложения

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните следующую команду, чтобы собрать и запустить приложение локально:

    dotnet run
    
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

  • Нажмите сочетание клавиш CTRL+C в командной строке, чтобы остановить приложение.

Запуск в контейнере Linux или контейнере Windows

  • Чтобы запустить в контейнере Linux, щелкните правой кнопкой мыши значок клиента Docker в области уведомлений системы и выберите переключиться на контейнеры Linux.

  • Чтобы запустить в контейнере Windows, щелкните правой кнопкой мыши значок Docker-клиента в системном трее и выберите переключиться на контейнеры Windows.

  • Перейдите в папку Dockerfile в dotnet-docker/samples/aspnetapp.

  • Выполните следующие команды, чтобы собрать и запустить пример в Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Команда build выполняет следующее:

    • присваивает образу имя aspnetapp;
    • ищет файл Dockerfile в текущей папке (точка в конце).

    Аргументы команды run:

    • выделяет псевдотерминал и сохраняет его открытым, даже если он не подключен. (действует так же, как --interactive --tty);
    • автоматически удаляет контейнер при завершении работы;
    • Настроить перенаправление <port> на локальную машину на порт 8080 в контейнере.
    • присваивает контейнеру имя aspnetcore_sample;
    • Укажите образ aspnetapp.
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

локальная сборка и развертывание.

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

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните команду dotnet publish:

    dotnet publish -c Release -o published
    

    Эта команда выполняет следующее:

    • собирает приложение в режиме выпуска (по умолчанию используется режим отладки);
    • Создайте ресурсы в опубликованной папке.
  • Запустите приложение.

    • Виндоус:

      dotnet published\aspnetapp.dll
      
    • Линукс:

      dotnet published/aspnetapp.dll
      
  • Перейдите к http://localhost:<port>, чтобы просмотреть домашнюю страницу.

Чтобы использовать приложение, опубликованное вручную в контейнере Docker, создайте файл Dockerfile и используйте docker build . команду для создания образа.

FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

Дополнительные ресурсы

Следующие шаги

Репозиторий Git помимо примера приложения содержит и документацию. Общие сведения о ресурсах, доступных в репозитории, см. в файле README. Особый интерес представляют сведения о реализации протокола HTTPS:

Образы Docker для ASP.NET Core

Для работы с этим руководством следует скачать пример приложения ASP.NET Core и запустить его в контейнерах Docker. Этот пример поддерживается в контейнерах Linux и Windows.

В примере Dockerfile используется функция сборки Docker с несколькими этапами для сборки и запуска в разных контейнерах. Контейнеры для сборки и выполнения создаются на основе образов, предоставленных корпорацией Майкрософт в Docker Hub:

  • dotnet/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

Предварительные требования

загрузка примера приложения;

Локальный запуск приложения

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните следующую команду, чтобы собрать и запустить приложение локально:

    dotnet run
    
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

  • Нажмите сочетание клавиш CTRL+C в командной строке, чтобы остановить приложение.

Запуск в контейнере Linux или контейнере Windows

  • Чтобы запустить в контейнере Linux, щелкните правой кнопкой мыши значок клиента Docker в области уведомлений системы и выберите переключиться на контейнеры Linux.

  • Чтобы запустить в контейнере Windows, щелкните правой кнопкой мыши значок Docker-клиента в системном трее и выберите переключиться на контейнеры Windows.

  • Перейдите в папку Dockerfile в dotnet-docker/samples/aspnetapp.

  • Выполните следующие команды, чтобы собрать и запустить пример в Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Команда build выполняет следующее:

    • присваивает образу имя aspnetapp;
    • ищет файл Dockerfile в текущей папке (точка в конце).

    Аргументы команды run:

    • выделяет псевдотерминал и сохраняет его открытым, даже если он не подключен. (действует так же, как --interactive --tty);
    • автоматически удаляет контейнер при завершении работы;
    • Настроить перенаправление <port> на локальную машину на порт 8080 в контейнере.
    • присваивает контейнеру имя aspnetcore_sample;
    • Укажите образ aspnetapp.
  • В браузере перейдите по адресу http://localhost:<port>, чтобы протестировать приложение.

локальная сборка и развертывание.

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

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните команду dotnet publish:

    dotnet publish -c Release -o published
    

    Эта команда выполняет следующее:

    • собирает приложение в режиме выпуска (по умолчанию используется режим отладки);
    • Создайте ресурсы в опубликованной папке.
  • Запустите приложение.

    • Виндоус:

      dotnet published\aspnetapp.dll
      
    • Линукс:

      dotnet published/aspnetapp.dll
      
  • Перейдите к http://localhost:<port>, чтобы просмотреть домашнюю страницу.

Чтобы использовать приложение, опубликованное вручную в контейнере Docker, создайте файл Dockerfile и используйте docker build . команду для создания образа.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

Дополнительные ресурсы

Следующие шаги

Репозиторий Git помимо примера приложения содержит и документацию. Общие сведения о ресурсах, доступных в репозитории, см. в файле README. Особый интерес представляют сведения о реализации протокола HTTPS:

Образы Docker для ASP.NET Core

Для работы с этим руководством следует скачать пример приложения ASP.NET Core и запустить его в контейнерах Docker. Этот пример поддерживается в контейнерах Linux и Windows.

В примере Dockerfile используется функция сборки Docker с несколькими этапами для сборки и запуска в разных контейнерах. Контейнеры для сборки и выполнения создаются на основе образов, предоставленных корпорацией Майкрософт в Docker Hub:

  • dotnet/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

Предварительные требования

загрузка примера приложения;

Локальный запуск приложения

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните следующую команду, чтобы собрать и запустить приложение локально:

    dotnet run
    
  • В браузере перейдите по адресу http://localhost:5000, чтобы протестировать приложение.

  • Нажмите сочетание клавиш CTRL+C в командной строке, чтобы остановить приложение.

Запуск в контейнере Linux или контейнере Windows

  • Чтобы запустить в контейнере Linux, щелкните правой кнопкой мыши значок клиента Docker в области уведомлений системы и выберите переключиться на контейнеры Linux.

  • Чтобы запустить в контейнере Windows, щелкните правой кнопкой мыши значок Docker-клиента в системном трее и выберите переключиться на контейнеры Windows.

  • Перейдите в папку Dockerfile в dotnet-docker/samples/aspnetapp.

  • Выполните следующие команды, чтобы собрать и запустить пример в Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Команда build выполняет следующее:

    • присваивает образу имя aspnetapp;
    • ищет файл Dockerfile в текущей папке (точка в конце).

    Аргументы команды run:

    • выделяет псевдотерминал и сохраняет его открытым, даже если он не подключен. (действует так же, как --interactive --tty);
    • автоматически удаляет контейнер при завершении работы;
    • сопоставляет порт 5000 на локальном компьютере с портом 80 в контейнере;
    • присваивает контейнеру имя aspnetcore_sample;
    • Укажите образ aspnetapp.
  • В браузере перейдите по адресу http://localhost:5000, чтобы протестировать приложение.

локальная сборка и развертывание.

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

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните команду dotnet publish:

    dotnet publish -c Release -o published
    

    Эта команда выполняет следующее:

    • собирает приложение в режиме выпуска (по умолчанию используется режим отладки);
    • Создайте ресурсы в опубликованной папке.
  • Запустите приложение.

    • Виндоус:

      dotnet published\aspnetapp.dll
      
    • Линукс:

      dotnet published/aspnetapp.dll
      
  • Перейдите к http://localhost:5000, чтобы просмотреть домашнюю страницу.

Чтобы использовать приложение, опубликованное вручную в контейнере Docker, создайте файл Dockerfile и используйте docker build . команду для создания образа.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

Дополнительные ресурсы

Следующие шаги

Репозиторий Git помимо примера приложения содержит и документацию. Общие сведения о ресурсах, доступных в репозитории, см. в файле README. Особый интерес представляют сведения о реализации протокола HTTPS:

Образы Docker для ASP.NET Core

Для работы с этим руководством следует скачать пример приложения ASP.NET Core и запустить его в контейнерах Docker. Этот пример поддерживается в контейнерах Linux и Windows.

В примере Dockerfile используется функция сборки Docker с несколькими этапами для сборки и запуска в разных контейнерах. Контейнеры для сборки и выполнения создаются на основе образов, предоставленных корпорацией Майкрософт в Docker Hub:

  • dotnet/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/core/sdk

    Этот образ используется в этом примере для создания приложения. Образ содержит пакет SDK для .NET Core, который включает программы командной строки (CLI). Изображение оптимизировано для локальной разработки, отладки и тестирования. Установленные средства разработки и компиляции делают этот образ относительно большим.

  • dotnet/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

  • dotnet/core/aspnet

    Этот образ используется в этом примере для выполнения приложения. Этот образ содержит среду выполнения и библиотеки ASP.NET Core и оптимизирован для запуска приложений в рабочей среде. Образ нацелен на высокую скорость развертывания и запуска приложений, поэтому он сравнительно невелик, что позволяет оптимизировать производительность сети между реестром Docker и узлом Docker. В контейнер копируются только двоичные файлы и содержимое, необходимые для запуска приложений. Все содержимое готово к работе, что обеспечивает минимальное время от момента docker run до запуска приложения. В модели Docker динамическая компиляция кода не требуется.

Предварительные требования

загрузка примера приложения;

Локальный запуск приложения

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните следующую команду, чтобы собрать и запустить приложение локально:

    dotnet run
    
  • В браузере перейдите по адресу http://localhost:5000, чтобы протестировать приложение.

  • Нажмите сочетание клавиш CTRL+C в командной строке, чтобы остановить приложение.

Запуск в контейнере Linux или контейнере Windows

  • Чтобы запустить в контейнере Linux, щелкните правой кнопкой мыши значок клиента Docker в области уведомлений системы и выберите переключиться на контейнеры Linux.

  • Чтобы запустить в контейнере Windows, щелкните правой кнопкой мыши значок Docker-клиента в системном трее и выберите переключиться на контейнеры Windows.

  • Перейдите в папку Dockerfile в dotnet-docker/samples/aspnetapp.

  • Выполните следующие команды, чтобы собрать и запустить пример в Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Команда build выполняет следующее:

    • присваивает образу имя aspnetapp;
    • ищет файл Dockerfile в текущей папке (точка в конце).

    Аргументы команды run:

    • выделяет псевдотерминал и сохраняет его открытым, даже если он не подключен. (действует так же, как --interactive --tty);
    • автоматически удаляет контейнер при завершении работы;
    • сопоставляет порт 5000 на локальном компьютере с портом 80 в контейнере;
    • присваивает контейнеру имя aspnetcore_sample;
    • Укажите образ aspnetapp.
  • В браузере перейдите по адресу http://localhost:5000, чтобы протестировать приложение.

локальная сборка и развертывание.

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

  • Перейдите в папку проекта в dotnet-docker/samples/aspnetapp/aspnetapp.aspnetapp.

  • Выполните команду dotnet publish:

    dotnet publish -c Release -o published
    

    Эта команда выполняет следующее:

    • собирает приложение в режиме выпуска (по умолчанию используется режим отладки);
    • Создайте ресурсы в опубликованной папке.
  • Запустите приложение.

    • Виндоус:

      dotnet published\aspnetapp.dll
      
    • Линукс:

      dotnet published/aspnetapp.dll
      
  • Перейдите к http://localhost:5000, чтобы просмотреть домашнюю страницу.

Чтобы использовать приложение, опубликованное вручную в контейнере Docker, создайте файл Dockerfile и используйте docker build . команду для создания образа.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Чтобы увидеть новое изображение, используйте команду docker images.

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Как отмечалось в предыдущем файле Dockerfile, файлы *.csproj копируются и восстанавливаются как отдельные слои. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Файл Dockerfile

Ниже приведен файл Dockerfile , используемый ранее запущенной командой docker build . Она использует dotnet publish для создания и развертывания так же, как показано в этом разделе.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

В предыдущем файле Dockerfile*.csproj файлы копируются и восстанавливаются в виде отдельных слоев. При создании образа команда docker build использует встроенный кэш. Если файлы *.csproj не изменялись с момента последнего запуска команды docker build, выполнять команду dotnet restore повторно не нужно. Вместо нее используется встроенный кэш для соответствующего слоя dotnet restore. Дополнительные сведения см. в рекомендациях по написанию Dockerfiles.

Дополнительные ресурсы

Следующие шаги

Репозиторий Git помимо примера приложения содержит и документацию. Общие сведения о ресурсах, доступных в репозитории, см. в файле README. Особый интерес представляют сведения о реализации протокола HTTPS:


Дополнительные ресурсы

Обучение

Модуль

Создание контейнерного веб-приложения с помощью Docker - Training

Используйте Docker для создания, хранения и управления образами частных контейнеров с помощью реестра контейнеров Azure.

Сертификация

Microsoft Certified: Azure Developer Associate (Сертификация Майкрософт. Помощник Разработчика Azure) - Certifications

Создавайте комплексные решения в Microsoft Azure для создания функций Azure, реализации веб-приложений и управления ими, разработки решений с использованием хранилища Azure и т. д.