알아야 할 Docker 개념

4050 단어

이미지와 컨테이너의 차이점



도커 "이미지"와 "컨테이너"의 차이를 느껴야 합니다.
흐름을 이해했는지 확인하십시오.
컨테이너를 실행하는 데 필요한 이미지를 빌드하는 Dockerfile이 있습니다.


Docker 파일 빌드 컨텍스트



dockerfile의 각 행의 컨텍스트를 이해해야 합니다.
  • 현재 빌드 컨텍스트는 무엇입니까(에이전트의 디렉토리)
  • 이미지의 현재 작업 디렉토리는 무엇입니까
  • 현재 사용자는 무엇입니까
  • 현재 단계는 무엇입니까(다단계 빌드의 경우)
  • 레이어 캐시에 미치는 영향

  • 에이전트는 docker build 명령이 시작된 시스템입니다. docker build 명령에 에이전트 시스템의 폴더인 필수 매개변수 "빌드 컨텍스트"가 있습니다.
    예를 들어 COPY <src> <dest> 명령<src> 매개변수는 현재 빌드 컨텍스트 폴더에 상대적인 경로입니다.<dest> 매개변수는 이미지 파일 시스템의 현재 작업 디렉토리에 상대적인 경로입니다.

    예를 들어 이 파일Dockerfile 에는 다음과 같은 파일 시스템이 있습니다.

    WORKDIR /src
    COPY . .
    




    빌드 컨텍스트(에이전트)
    작업 디렉토리(이미지)



    - docker-concepts-you-should-know
      - src
        - WebApi
          - WebApi.csproj
          - Program.cs
          - Dockerfile
           
    - src
      - src
        - WebApi
          - WebApi.csproj
          - Program.cs
          - Dockerfile
           

    빌드 시간 및 런타임

    You are able to run apps while docker build building image with RUN statement. And you can run your apps in running container with ENTRYPOINT or with docker exec. Normally you might need to run your development tools build time, but your service or utils (like database migration) in runtime.
    Build time executions are focused on image content, for example you might want to build binaries from source code. Build time you don't have your private network and volumes, so you can't have access to database.

    레이아웃 캐싱

    Each statement in docker file produces image cache layer on docker host machine.
    Cache layers could help application build time, for example
    dotnet restore result will be cached if files copied to the docker image are the same. That is why default Dockerfile generated by visual studio copies csproj files first, and other files only after dotnet restore.

    WORKDIR /src
    COPY ["src/webapi/webapi.csproj", "src/webapi/"]
    RUN dotnet restore "src/webapi/webapi.csproj"
    COPY . .
    


    Andrew Lock은 이 최적화에 대한 훌륭한 기사를 썼습니다.
    https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files/

    도커 작성



    Docker Compose는 내부적으로 Docker를 호출합니다. 그러나 docker-compose에는 고유한 동작이 있으며 일부 명령은 다르게 작동할 수 있습니다.

    진입 지점



    쉘 스크립트를 진입점으로 사용할 수 있습니다. Windows 개발자 환경이 있는 경우 다음을 기억해야 합니다.
  • .gitattributes에서 .sh 파일에 대해 lr을 설정합니다.

  • *.sh text eol=lf
    


  • git 메타데이터에서 .sh 파일에 대해 +x를 설정합니다.

  • git update-index --chmod=+x foo.sh
    


    또는 TortoiseGit을 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기