kimyu0218
  • [docker] docker 시작하기 (아키텍처)
    2023년 12월 29일 00시 04분 21초에 업로드 된 글입니다.
    작성자: @kimyu0218
    docker를 공부하다보면 허브, 레지스트리 등 생소한 용어가 많이 등장한다. 허브는 뭐고, 레지스트리는 또 뭐야?

    docker architecture

    도커는 클라이언트-서버 구조를 갖는다. 클라이언트*는 데몬*과 통신하여 도커 컨테이너를 구축하고 실행 및 배포할 수 있다.

    *docker client (=`docker`) : 도커 사용자가 도커와 상호작용하는 주요 방법이다.
    *docker daemon (=`dockerd`) : 도커 API 요청을 수신하고 이미지/컨테이너/네트워크/볼륨 같은 도커 개체들을 관리한다.

     

    docker registry

    도커 레지스트리는 도커 이미지를 저장하고 관리하는 서비스다. 도커 허브가 레지스트리의 한 예로, 누구나 사용할 수 있는 퍼블릭 레지스트리다. 하지만 개인이나 조직이 독자적으로 레지스트리를 운영할 수도 있다.

    • docker pull : 도커 이미지를 도커 레지스트리로부터 가져온다. 태그를 지정하지 않는 경우, `latest` 태그의 이미지를 가져온다.
    docker pull [IMAGE[:TAG]]
    • docker run : 도커 이미지를 실행하여 도커 컨테이너를 생성한다. 이미지가 로컬에 없는 경우, 도커 레지스트리에서 해당 이미지를 가져온다.
    docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
    • docker push : 로컬에 있는 도커 이미지를 도커 레지스트리에 업로드한다.
    docker push [IMAGE[:TAG]]
    💡docker registry vs. docker repository
    • 도커 레지스트리는 도커 이미지를 저장하고 관리하는 서버다. 즉, 여러 사용자가 이미지를 공유하고 사용할 수 있는 중앙 저장소 역할을 수행한다.
    • 반면, 도커 레포지토리는 도커 이미지 저장소지만 도커 레지스트리 내에 위치한다. 즉, 레지스트리 안에서 이미지를 구분하는 개별적인 저장소다.

    docker objects

    image

    도커 컨테이너를 생성하는 지침이 포함된 읽기 전용의 템플릿이다. 도커 사용자가 자신만의 이미지를 만들 수 있고, 다른 사람이 만들고 레지스트리에 게시한 이미지를 사용할 수도 있다. 자신만의 이미지를 빌드/생성/실행하기 위해서는 Dockerfile*이라는 설정파일이 필요하다.

    *Dockerfile
    • 도커 이미지를 빌드하기 위한 텍스트 기반의 설정파일
    • 도커 엔진에게 이미지를 어떻게 구성할지 지시한다. (의존성 설치, 실행 명령 등)
    • 일관된 방식으로 도커 이미지를 생성할 수 있다.


    container

    도커 컨테이너는 다른 프로세스와 격리된 환경을 갖는 일종의 샌드박스 프로세스로, 도커 이미지를 실행한 인스턴스다. 도커 API나 CLI를 사용하여 컨테이너를 생성/시작/중지/삭제할 수 있다.

    • 컨테이너 생성 및 시작
    docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
    • 컨테이너 중지
    docker stop [CONTAINER_ID | CONTAINER_NAME]
    • 컨테이너 삭제
    docker rm [CONTAINER_ID | CONTAINER_NAME]

     참고자료

    댓글