파일을 어떻게 압축합니까?네트워크 핵심 응용
Docker와 컨테이너 운송에 관한 일련의 기사의 첫 번째 부분입니다.순핵심.
본문에서 우리는
일반 토론 컨테이너 운송
우리가 취해야 할 절차, 예를 들어 공작물을 만드는 것, 예를 들어
Dockerfile
, .dockerignore
과 기본적인 Docker 명령을 배운다.리소스
Sign up for a free Azure account
클라우드 용기, 예를 들어 개인 등록표를 사용하려면 무료Azure 계정
, 본 시리즈는 기본 개념, 볼륨, 네트워크, Docker compose 등 내용
이것은 가이드입니다. Docker 그림이 가능한 한 작지만, 성능도 확보하고, 명령을 사용해야 하는 이유를 알 수 있습니다.
VS 코드는 이 확장, 구축, 실행, 작성, 배치, 그리고 대량의 우수한 명령
이 강좌는 에서 어떻게 마이크로 서비스를 구축하는지 소개한다.Net을 아카이빙합니다.
이것은 ASP로 웹 응용 프로그램을 개발하는 것을 가르쳐 줄 것이다.Net 커널이 사용됩니다.Net Core CLI
이것은 콘솔 응용 프로그램
Docker가 직접 설명하는 방법입니다.네트워크 응용.
왜?
제목에서 우리가 할 일을 dockerizing이라고 합니다.Docker의 이름은
dockerizing
입니다.또 다른 이름은 컨테이너화이고, Docker는 컨테이너의 흔한 공급업체로, 이 두 개념은 거의 동의어가 되었다.다른 공급업체도 있을 거야.관심 있는 경우 여기에서 더 많은 내용을 읽을 수 있습니다.
https://techbeacon.com/enterprise-it/30-essential-container-technology-tools-resources-0
Docker는 응용 프로그램을 컨테이너에 배치하는 데 도움을 줍니다.그럼 저희가 왜 이렇게 해야 돼요?이렇게 하려는 데는 여러 가지 이유가 있다.우선 용기가 무엇인지 이야기해 봅시다.Docker가 정의하는 방법을 살펴보겠습니다.
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
좋습니다. 그래서 우리는 한 컴퓨터 환경에서 다른 컴퓨터 환경으로 속도와 신뢰성을 얻었기 때문에 제 기계보다 더 큰 범위에서 일할 수 있습니까?
Yes exactly that
또 뭐 있어요?
A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries, and settings
알겠습니다. 응용 프로그램 코드뿐만 아니라 실행 시, 시스템 도구 등 모든 것을 휴대하고 있습니다. 이것은 가상 이미지가 아닙니까?
Well no, it's a lightweight version. Containers use the underlying Host OS they run in to make syscalls.
어?알 것 같아.나는 Docker로 용기를 만들었다. 이것은 내가 모든 사람의 환경에서 똑같이 보이는 작고 가벼운 것을 얻었다는 것을 의미한다.내 프로그램을 발표하고 싶거나?
Yes you got it and yes definitely when you want to ship your app but also during development if you want. Today the Cloud is super popular and becomes the default standard for hosting your app. Having your app in a container format means it's easy for us to scale it using, for example, Kubernetes when we want to manage a ton of containers or support a microservice architecture. Storing your containers in the Cloud, in a container registry, is also made possible at most of the large Cloud Vendors.
방법 - 프레젠테이션
좋습니다. 왜 우리는 우리의 응용 프로그램을 컨테이너 버전으로 바꾸어야 하는지, 이제 우리가 취해야 할 실제 절차를 봅시다.
비계Network Application,
Dockerfile
Docker 만들기 파일 무시
이미지 메이킹
저희 컨테이너
웹 응용 프로그램 구성
우선 하나가 필요합니다.Net 네트워크 애플리케이션Dotnet CLI를 사용하여 다음과 같이 생성할 수 있습니다.
dotnet new webapp -o aspnetcoreapp
이것은 aspnetcoreapp
이라는 네트워크 응용 프로그램을 만들 것이다.현재 Google 웹 응용 프로그램이 생겼습니다. Docker 부분에 주목해 봅시다. Google은 현재 이 웹 응용 프로그램이 부족합니다. 이 웹 응용 프로그램을 추가해야 합니다.
Dockerfile 만들기
알겠습니다. 이 부분에서
Dockerfile
이라는 파일을 만들 것입니다.이것은 우리가 어떤 운영체제를 필요로 하는지, 어떤 명령을 설치하고 싶은지, 응용 프로그램 코드를 어디서 찾을 것인지, 그리고 마지막으로 용기에서 응용 프로그램을 시작하는 방법을 지정하는 것이다.Dockerfile을 보십시오. 마치 무엇과 어떻게 요리하는지에 관한 레시피와 같습니다.그래.이 제품을 만들려면 다음과 같이 하십시오.touch Dockerfile
이미지 지정내용에 대해 우리가 정의해야 할 첫 번째 일은 우리가 기반으로 하고 싶은 이미지이다.우리는 파일이 용기에서 끝날 수 있도록 작업 디렉터리를 설정해야 한다.
다음과 같이 WORKDIR 및 WORKDIR 명령을 사용하여 이 작업을 수행했습니다.
# Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
우리가 여기서 말하는 것은 작은 운영체제 이미지가 있는 이미지를 캡처하는 것이다.순핵심.우리는 또 우리의 업무 목록은 /app
이라고 말했다.프로젝트 파일 복사
이제
.csproj
으로 끝나는 프로젝트 파일을 복사해야 합니다.또한 다음과 같이 지정된 의존 항목을 모두 설치할 수 있도록 dotnet restore
을 호출해야 합니다.COPY *.csproj ./
RUN dotnet restore
복제 및 구축그런 다음 다음과 같이 애플리케이션 파일을 복제하고 애플리케이션을 구축해야 합니다.
COPY . ./
RUN dotnet publish -c Release -o out
런타임 이미지 구축여기서 다음과 같이 이미지 및 작업 디렉토리를 다시 지정합니다.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
그러나 이번에는 생성된 파일을 app/out
으로 복제하기를 희망합니다.COPY --from=build-env /app/out .
응용 프로그램 시작마지막으로, 우리는 프로그램을 어떻게 시작하는지 설명하는 명령을 추가했다.우리는 명령 입구점을 통해 실현한다.ENTRYPOINT는 매개변수가 있는 명령행 호출로 변환되는 배열을 받아들입니다.우리의 명령은 다음과 같다.
ENTRYPOINT ["dotnet", "aspnetcoreapp.dll"]
이것은 명령줄에 dotnet aspnetcoreapp.dll
을 호출한다는 것을 의미한다.Dockerfile
의 전체적인 모양은 다음과 같습니다.FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetcoreapp.dll"]
를 생성합니다.dockerignore 파일
Dockerfile
에서 명령을 구축하기 전에, 우리는 원하지 않는 파일/디렉터리 문제를 해결해야 한다.이를 위해 Docker는 .dockerignore
이라는 파일을 만들라고 알려줍니다.그럼 저희가 원하는 게 뭘까요?우리는 이를 실현하기 위해 bin
또는 obj
같은 디렉터리가 없다는 것을 확보해야 한다.먼저
.dockerignore
파일을 생성합니다.touch .dockerignore
.dockerignore
파일에 다음을 입력합니다.# .dockerignore
Dockerfile
[b|B]in
[O|o]bj
주:#
은 평론에 쓰인다.우리의 이미지 구축 & 시동 용기
이 점에서 우리는 우리가 하고 싶은 레시피, 즉 우리의
Dockerfile
이 하나밖에 없다.여기서부터 우리는 두 단계로 나누어 진행해야 한다.이미지를 만들려면 다음과 같이 명령
docker build
을 사용할 수 있습니다.docker build -t aspnetcoreapp .
만약 우리가 조금만 분해한다면, 우리는 -t
을 사용하여 우리의 그림을 명명하는 것을 발견할 수 있을 것이다.aspnetcoreapp
이 이미지 이름이 됩니다.우리의 마지막 매개 변수는 문장점 .
입니다. 이것은 우리가 어디에서 Dockerfile
을 찾을 수 있는지를 나타냅니다. 우리의 예에서 이것은 현재 디렉터리입니다.이 명령을 실행하면 첫 번째 오류가 발생합니다.Net Core 이미지가 제거되면 FROM 명령에 유의하십시오.
그런 다음 Dockerfile에서 나머지 명령을 모두 처리합니다.
위에서 볼 수 있듯이 그것은
successfully tagged aspnetcoreapp:latest
이다.이것은 모든 것이 매우 좋다는 것을 의미한다. 우리는 이미지가 있다.그럼 어떻게 검사할까요?다음과 같이 명령
docker images
을 입력할 수 있습니다.우리의 용기를 만들고 실행합니다
이 점에서 우리는 그림이 하나 있다.잘 됐다.그것은 우리의 응용 프로그램 코드, 명령 실용 프로그램, 운영체제, 그리고 우리가 그것에 포함된 모든 기타 내용을 포함한다.우리는 시작해야 한다.이를 위해서는 용기로 만들어야 한다.다음과 같이 명령
docker run
을 사용합니다.docker run -d -p 8080:80 --name myapp aspnetcoreapp
명령을 분해합니다.-d
, 이것은 단지 우리가 백그라운드에서 용기를 운행한다는 것을 의미할 뿐이다.-p
은 외부 포트와 내부 컨테이너 포트를 일치시킬 것을 의미한다.일부 Dockerfile
사양에서는 내부 포트를 명시적으로 공개해야 합니다. 예를 들어 80
에서 실행되기 때문에 이 사양은 필요하지 않습니다.문법 external port: internal port
을 명확히 하자.이것은 우리가 기계 포트 8080
을 내부 컨테이너 포트 80
에 연결한다는 것을 의미한다.--name
, 이것은 우리가 제공한 컨테이너 이름, myapp
입니다.만약 우리가 이름을 지정하지 않는다면, 우리를 위해 이름을 생성할 것이다.이름이 생기면 인용하기 쉽다.aspnetcoreapp
입니다.컨테이너가 생성되었는지 확인하고 명령
docker ps
을 사용하여 실행 중입니다.마지막으로
http://localhost:8080
으로 이동하여 컨테이너가 시작되고 실행되는지 확인합니다.깨끗이 정리하다
현재 실행 중인 이미지와 용기를 만들었습니다.시간의 추이에 따라, 너는 대량의 그림과 용기를 가지고 있을 것이다.공간이 필요하기 때문에 Docker 명령을 배워서 제어할 수 있습니다.
용기 종류
docker stop [docker name]
을 정지합니다.따라서 우리의 경우 다음과 같습니다.docker stop myapp
컨테이너를 제거하려면 다음과 같이 하십시오.docker rm myapp
용기 이름이나 id (최소 3글자) 를 사용하여 그것을 정지하거나 삭제할 수 있습니다.예를 들어 docker ps
을 입력하면 그 이름을 찾을 수 있습니다.이제 두 장의 사진이 남았습니다. 우리가 만든
aspnetcoreapp
과 mcr.microsoft.com/dotnet/core/runtime:2.2
을 기반으로 한 사진입니다.깨끗이 정리하려면 명령 docker rmi
, 일명 Remove image를 사용할 수 있습니다. 다음과 같습니다.docker rmi myimage:latest
docker rmi mcr.microsoft.com/dotnet/core/runtime:2.2
요약
우리는 Docker의 도움으로 첫걸음을 내디뎠다.순핵심.이 과정에서 컨테이너와 Docker를 사용하는 이유에 대해 논의했습니다.
이미지에 들어갈 내용을 지정하기 위해
Dockerfile
파일을 지정하는 내용도 배웠습니다.또한 .dockerignore
파일을 작성하여 이미지에 포함되지 말아야 할 내용을 지정하여 작고 빠르게 구축할 수 있도록 했습니다.이 밖에 우리는 컨테이너를 건조하고 가동했다.
다음 부분에서 우리는 마이크로 서비스를 구축하고 이를 클라우드에 배치하는 것을 연구할 것이다.
감사를 드리다
자바 챔피언 DevOps 전문가를 주목해야 합니다.
Reference
이 문제에 관하여(파일을 어떻게 압축합니까?네트워크 핵심 응용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dotnet/how-you-can-dockerize-a-net-core-app-4h96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)