Docker 입문 실천 (5) Docker 3대 구성 요소의 작업 메커니즘 이해

3175 단어 Docker
이 문서는 나의 새 블로그 주소로 이전되었으니 방문을 환영합니다.
blog.favorstack.io
# (하나) Docker 미러가 어떻게 작동하는지
Docker 미러는 Docker 컨테이너가 실행하는 정적 템플릿이라는 것을 알고 있습니다.각 미러에는 레이어가 포함되어 있으며 Docker는 레이어를 단일 미러로 조합하기 위해 union file systems라는 레이어를 사용합니다.unionFS 별도의 파일 시스템에서 파일과 폴더가 분기 형식으로 나타날 수 있도록 하고 투명하게 덮어쓰여 최종적으로 연속적인 파일 시스템을 형성할 수 있다.
Docker가 이렇게 가벼운 이유 중 하나는 바로 이 층 때문이다.이미지를 수정할 때, 예를 들어 프로그램을 새 버전으로 업데이트할 때, 새로운 층을 구축합니다.따라서 가상 컴퓨터를 조작할 때처럼 전체 렌즈나 전체 재구성을 교체하는 것이 아니라 이 층만 추가되거나 수정된다.이제 전체 렌즈를 나눠줄 필요가 없다. 업데이트만 하면 된다. Docker 렌즈를 더 빠르고 간단하게 나눠줄 수 있다.
모든 거울은 하나의 기초 거울에서 시작된다. 예를 들어 우리가 전에 사용했던 unionFS 거울도 우리가 스스로 기초 거울을 만들어서 새로운 거울을 사용할 수 있다.예를 들어 우리가 제작한 ubuntu:16.04, 그리고 baseos:1.0 등 이 거울들은 우리의 모든 자바 응용 프로그램의 기초 거울에 사용할 수 있다.
다음에 Docker 거울은 일련의 간단하고 묘사적인 절차를 통해 이러한 기초 거울에서 구축할 수 있는데 이런 절차를 명령이라고 부른다.각 명령은 미러에 새 레이어를 생성하며 일반적으로 이러한 동작을 포함합니다.
  • 명령 실행
  • 일부 파일 또는 폴더 추가
  • 환경 변수 만들기
  • 이 거울에서 용기를 시작할 때 어떤 프로그램을 실행합니까?

  • 이 명령들은 jre:7u80 라는 텍스트 파일에 놓여 있으며, Dockerfile 는 기본 이미지에서 이미지를 구축하는 일련의 명령과 명령을 포함한다.거울을 만들어 달라고 요청할 때, Docker는 이 Dockerfile 파일을 읽고, 명령을 실행하고, 최종 거울을 생성합니다.
    # (둘) Docker registry 작업 방법Dockerfile는 Docker의 거울을 위탁 관리하는 곳이다. 우리가 거울을 구축할 때 Docker Hub와 같은 공공 창고로 옮기거나 자신의 사유 창고로 옮길 수 있다.
    Docker 클라이언트를 통해 우리는 이미 발표된 거울을 검색하여 Docker 호스트로 끌어낸 다음 용기를 구축하는 데 사용할 수 있습니다.Docker registry 공공 창고도 제공하고 개인 창고도 제공하여 거울을 저장한다.공공 창고는 검색할 수 있고 누구에게도 다운로드할 수 있지만, 개인 창고의 거울은 검색 결과에 나타나지 않으며, 당신과 사용자만 이 거울을 끌어당겨 용기를 구축하는 데 사용할 수 있다.
    #(3) Docker 컨테이너는 어떻게 작동하는지
    용기에는 운영체제, 사용자가 추가한 파일, 메타데이터 등이 포함되어 있다.모든 용기는 하나의 거울에서 만들어지는 것을 보았습니다. 이 거울은 Docker에게 용기가 무엇을 위탁 관리해야 하는지, 용기가 실행될 때 어떤 프로세스를 실행해야 하는지, 그리고 일련의 다른 설정 데이터를 알려 줍니다.Docker 미러는 읽기 전용입니다. Docker가 하나의 미러에서 용기를 실행할 때, 미러 위에 읽기 전용 층을 추가합니다. (앞서 언급한 Docker Hub 을 사용하면, 응용 프로그램이 위에서 실행될 수 있습니다.
    #(4) 하나의 컨테이너를 실행할 때 어떤 일이 발생했는지
    바이너리 파일unionFS을 사용하든 API를 사용하든 Docker 클라이언트는 Docker 데몬을 사용해서 용기를 실행하라고 알려줍니다.
    $ docker run -it ubuntu:16.04 /bin/bash
    

    Docker 엔진 클라이언트는 docker 바이너리 파일과 docker 하위 명령을 통해 용기를 만듭니다.Docker 클라이언트는 컨테이너를 만들기 위해 Docker 데몬에 다음 두 가지 이상의 정보를 제공해야 합니다.
  • 용기는 어느 거울에서 만듭니까? 예를 들어run
  • 용기 생성 후 용기에서 실행할 명령, 예를 들어 ubuntu:16.04
  • 그렇다면 이 명령을 실행할 때 밑바닥에는 어떤 일이 일어났을까?순서대로 Docker 엔진은 다음과 같은 작업을 수행합니다.
  • 픽업/bin/bash 렌즈: Docker 엔진은 먼저 이 렌즈가 로컬에 존재하는지 확인하고 존재하면 용기를 만듭니다.만약 존재하지 않는다면, 먼저 가서 ubuntu:16.04 가져갈 것이다.
  • 새 용기 만들기
  • **파일 시스템을 할당하여 읽기 및 쓰기 가능 계층으로 마운트합니다. **파일 시스템에 컨테이너를 만들고 읽기 및 쓰기 가능 계층을 미러에 추가합니다.
  • **분배망 카드/브리지:**용기가 호스트와 통신할 수 있도록 네트워크 카드를 만듭니다.
  • **IP 주소 할당:**IP 풀에서 사용 가능한 IP를 찾아 할당합니다.
  • 지정한 프로세스를 실행합니다
  • **응용된 출력을 포획하고 제공한다. **응용된 표준 입력, 출력, 오류 출력을 연결하고 기록한다.

  • 이제 우리는 운행 중인 용기가 하나 생겼다.다음에 우리는 용기를 관리하고 응용 프로그램과 상호작용을 할 수 있으며, 실행이 끝나면 용기를 멈추고 삭제할 수 있다.
    참조:https://docs.docker.com/engine/understanding-docker/
    (끝)
    이 문서는 나의 새 블로그 주소로 이전되었으니 방문을 환영합니다.
    blog.favorstack.io

    좋은 웹페이지 즐겨찾기