.NET 7용 Docker 내장 컨테이너 지원
5696 단어 dockerdotnetcsharpcontainerapps
.NET 7 출시는 2022년 11월 8일부터 10일까지 .NET Conf 2022에서 예정되어 있습니다! 그때까지 우리는 이 새로운.NET release의 새로운 기능과 개선 사항 중 일부를 시험해 볼 수 있습니다!
몇 가지 새롭고 흥미로운 기능 중에서 특히 마음에 들고 여기서 강조하고 싶은 기능은 .NET 7에 대한 도커 내장 컨테이너 지원입니다.
새로운 클라우드 네이티브 기능 중 하나인 이 새로운 .NET 7 리소스는 .NET이 클라우드 네이티브 애플리케이션을 구축하고 웹 앱에서 탄력성, 확장성, 효율성 및 속도를 달성하기 위한 탁월한 대안으로 스스로를 더욱 통합하는 데 도움이 됩니다.
시작하자
이 릴리스의 경우 Docker 및 .NET 7.0.100-rc.1.22431.12 이상이 설치되어 있어야 합니다. 또한 Linux-x64 컨테이너만 지원됩니다.
아래에서 컨테이너화된 ASP.NET 애플리케이션을 처음부터 빌드하는 것이 얼마나 간단한지 확인할 수 있습니다.
# 1st step - create a new project
dotnet new mvc -n my-containerized-app
# 2nd step - move project to its directory
cd my-containerized-app
# 3rd step - add a reference to a (temporary) package that creates the container
dotnet add package Microsoft.NET.Build.Containers
# 4th step - publish your project for linux-x64
dotnet publish --os linux --arch x64 -p:PublishProfile=DefaultContainer
# 5th step - run your app using the new container
docker run -it --rm -p 5010:80 --name my-cloud-native-app my-containerized-app:1.0.0
docker 및 .NET CLI에 익숙하거나 이미 마스터했다면 위의 지침 순서를 이해하는 데 어려움이 없을 것입니다.
그러나 초보자라면 각 문장을 단계별로 살펴보겠습니다.
첫 번째 및 두 번째 단계에서는 ASP.NET Core Empty 템플릿을 사용하여 새 .NET 애플리케이션을 만든 다음 새 프로젝트 디렉터리로 이동했습니다.
$ dotnet new mvc -n my-containerized-app
$ cd my-containerized-app
# 1st step - create a new project
dotnet new mvc -n my-containerized-app
# 2nd step - move project to its directory
cd my-containerized-app
# 3rd step - add a reference to a (temporary) package that creates the container
dotnet add package Microsoft.NET.Build.Containers
# 4th step - publish your project for linux-x64
dotnet publish --os linux --arch x64 -p:PublishProfile=DefaultContainer
# 5th step - run your app using the new container
docker run -it --rm -p 5010:80 --name my-cloud-native-app my-containerized-app:1.0.0
$ dotnet new mvc -n my-containerized-app
$ cd my-containerized-app
dotnet new
: 새 프로젝트를 만드는 명령mvc
: .NET 템플릿 프로젝트를 설정하는 인수-n
: 생성된 출력에 대한 옵션세 번째 단계에서는 기본적으로 .NET 애플리케이션을 컨테이너로 게시하기 위해
Microsoft.NET.Build.Containers
, nuget package을 추가했습니다.$ dotnet add package Microsoft.NET.Build.Containers
이 예제에서는 empty mvc template 을 사용하고 있지만 자신의 프로젝트에서는 이 패키지를 추가하기만 하면 됩니다.
my-containerized-app.csproj
파일을 살펴보면 패키지를 볼 수 있습니다. <ItemGroup>
<PackageReference Include="Microsoft.NET.Build.Containers" Version="0.1.8" />
</ItemGroup>
네 번째 단계에서는 애플리케이션을 컴파일했습니다.
$ dotnet publish --os linux --arch x64 - p:PublishProfile=DefaultContainer
dotnet publish
: 앱을 컴파일하는 명령--os linux
및 --arch
: 대상 운영 체제(OS)를 지정하고 대상 아키텍처를 지정하는 옵션입니다. 우리는 각각 linux와 x64를 지정했습니다. 그리고 Linux-x64 컨테이너만 지원된다는 점을 기억하는 것이 중요합니다-p
: 속성 설정에 사용콘솔에
docker images
를 입력하면 이미지가 이미 생성된 것을 볼 수 있습니다.REPOSITORY TAG IMAGE ID CREATED SIZE
my-containerized-app 1.0.0 b65f7ee7668a 7 seconds ago 220MB
이제 다섯 번째이자 마지막 단계에서 마침내 컨테이너를 실행합니다.
$ docker run -it -p 5010:80 --name my-cloud-native-app my-containerized-app:1.0.0
docker run
: 실행되는 컨테이너 프로세스는 자체 파일 시스템, 자체 네트워킹 및 호스트와 분리된 자체 격리된 프로세스 트리가 있다는 점에서 격리됩니다-it
: 분리 모드 대신 대화형 모드에서 컨테이너를 실행하여 컨테이너가 실행 상태에 있는 동안 명령을 실행할 수 있습니다-p 5010:80
: 사용된 포트의 정의입니다. <port that we will use on our local host>:<port used inside the container>
--name my-cloud-native-app
: 컨테이너의 이름을 설정하여 docker가 임의의 이름을 생성하지 못하도록 합니다.my-containerized-app:1.0.0
: 사용하려는 이미지 설정, 이 예에서는 <name of our project>:<version defined by .NET>
모든 것이 잘 진행된다면 아래와 비슷한 결과를 얻게 될 것입니다.
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
No XML encryptor configured. Key {2b3bd45e-0cc8-4cad-a0b9-ce5593370e33} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /app
그런 다음 아무 브라우저에서나 응용 프로그램에 액세스하십시오:
http://localhost:5010/
:결론
그게 다야. 이 리소스가 얼마나 단순하고 프로젝트에 얼마나 유용한지 확인할 수 있었습니다. 가상 머신과 달리 컨테이너는 신속하게 확장 및 축소할 수 있으며 세분화된 확장성, 이식성 및 리소스의 효율적인 사용을 제공하는 클라우드 네이티브 애플리케이션에 필수적입니다.
Reference
이 문제에 관하여(.NET 7용 Docker 내장 컨테이너 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/jaquiel/docker-built-in-container-support-for-net-7-3ej0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(.NET 7용 Docker 내장 컨테이너 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jaquiel/docker-built-in-container-support-for-net-7-3ej0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)