[CI/CD] Docker 개념

최제혁·2023년 9월 5일
0

CI/CD

목록 보기
2/3

Docker

  • 도커란 ?

    • 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트
    • 도커는 일반적으로 도커 엔진 혹은 도커에 관련된 모든 프로젝트를 말함
  • 도커엔진이란?

    • 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 프로젝트
  • Virtual Machine(가상머신) vs Docker Container(도커 컨테이너)

    💡 가상머신
    → Hypervisor를 통해 여러개의 운영체제를 생성되고 관리됨 (Guest OS)
    → 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 HyperVisor
    를 거치므로 성능 손실이 큼
    → 가상머신은 Guest OS를 사용하기 위한 라이브러리, 커널 등을 포함하
    므로 배포할 때 용량이 큼

    💡 도커 컨테이너
    → 가상화된 공간을 생성할 때 리눅스 자체 기능을 사용하여 프로세스 단
    위의 격리 환경을 만드므로 성능 손실 없음
    → 가상머신과 달리 커널을 공유해서 사용하므로, 컨테이너에는 라이브러
    리 및 실행파일만 있어 용량이 작음
    → 컨테이너를 이미지로 만들면 배포하는 시간이 가상머신에 비해 빠름
    사용할때 성능 손실 또한 거의 없음


  • Docker Client

    • 도커를 설치하면 그것이 Client며 build, pull, run 등의 도커 명령어를 수행합니다.
  • DOCKER_HOST

    • 도커가 띄워져있는 서버를 의미합니다. DOCKER_HOST에서 컨테이너와 이미지를 관리하게 됩니다.
  • Docker daemon

    • 도커 엔진입니다.
  • Registry

    • 외부(remote) 이미지 저장소. 다른 사람들이 공유한 이미지를 내부(local) 도커 호스트에 pull할 수 있다. 이렇게 가져온 이미지를 run하면 컨테이너가 된다
  • 도커 이미지와 도커 컨테이너

    • 도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며 도커 엔진의 핵심
    • 도커 이미지와 컨테이너는 1:N 관계

  • Docker File -> Docker Image
    • Docker File은 도커 이미지를 만들때 사용하는 파일. docker build 명령어를 실행시키면 도커 이미지를 만들 수 있습니다.
  • Docker Image -> Docker Container
    • Docker Image를 docker run 명령어를 실행시키면 Docker Container를 만들 수 있습니다.

  • 도커 이미지
    • 도커 이미지(Docker Image)는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념
    • 이미지는 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용되며 여러 계층으로 된 바이너리 파일로 존재합니다.
    • 도커에서 사용하는 이미지의 이름은 기본적으로 아래의 형태로 구성됩니다.
[저장소 이름]/[이미지 이름]:[태그]
  • 저장소 이름

    • 이미지가 저장된 장소. 저장소 이름이 명시되지 않은 이미지는 도커 허브의 공식 이미지를 뜻함.
  • 이미지 이름

    • 해당 이미지가 어떤 역할을 하는지 나타내며 필수로 설정해야함.
      • ex) ubuntu:latest → 우분투 컨테이너를 생성하기 위한 이미지라는 것을 나타냄.
  • 태그

    • 이미지의 버전을 나타냄. 태그를 생략하면 도커 엔진은 latest로 인식함.
  • 도커 컨테이너

    • 도커 이미지로 생성할 수 있으며, 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는, 호스트와 다른 컨테이너로부터 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간(프로세스)이 생성
    • 대부분의 도커 컨테이너는 생성될 때 사용된 도커 이미지의 종류에 따라 알맞은 설정과 파일을 가지고 있기 때문에 도커 이미지의 목적에 맞도록 사용되는 것이 일반적
    • 컨테이너는 이미지를 읽기 전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로 컨테이너에서 무엇을 하든지 원래 이미지는 영향을 받지 않는다.
    • 생성된 각 컨테이너는 각기 독립된 파일시스템을 제공받으며 호스트와 분리돼 있으므로 특정 컨테이너에서 어떤 어플리케이션을 설치하거나 삭제해도 다른 컨테이너와 호스트는 변화가 없다.

0개의 댓글