본문 바로가기

docker

1. 도커 기본

따라하며 배우는 도커와 CI환경

1. 도커란 무엇인가?

응용 프로그램을 쉽게 만들고, 배포하고, 실행하기 위한 컨테이너 기반의 도구

 

컨테이너란 무엇인가?

내부 프로그램, 실행환경을 추상화한 단위.

동일한 인터페이스 제공으로 배포, 관리가 단순하고 어떤 클라우드 환경에서든 실행 가능

 

도커를 쓰는 이유

프로그램 다운로드를 간단히, 부수효과 없이 명확하게 진행하기 위함이다.

각 데스크탑의 각기 다른 상황 (운영체제, 패키지 버전 등)에 따른 부수효과 (에러, 필요 의존성 프로그램 설치 등) 의 문제를 해결함

 

2. 도커 이미지와 도커 컨테이너

컨테이너

코드, 모든 종속성 패키징한 단위

 

컨테이너 이미지

응용 프로그램 실행에 필요한 모든것을 가지고 있는 단위 (코드, 런타임, 시스템 단위 도구 등)

 

도커 런타임시 동작 방식

도커 이미지로 도커 컨테이너를 생성, 도커 컨테이너로 프로그램을 실행함

 

3. 도커 설치시 참고 (mac)

터미널에 docker 입력시 not found 발생함. 터미널에서 수동으로 추가

export PATH="$PATH:/Applications/Docker.app/Contents/Resources/bin/"

 

4. 도커 사용시 흐름

4-1. 터미널에서 도커 커맨드 입력하여 실행시

ex) docker hello-world

 

4-2. 로컬에 캐시가 되어있는지 확인

 

이미지가 캐쉬되어있지 않은 경우:

도커허브에서 이미지를 가져옴 -> 로컬에 캐쉬함 -> 해당 이미지를 통해 컨테이너 생성

 

이미지가 캐쉬되어 있는경우:

캐쉬된 이미지로 컨테이너 생성

 

4-3. 컨테이너는 이미지에서 설정된대로 프로그램을 실행함

 

5.  도커와 기존 가상화 기술과의 차이

가상화 기술 출현 전

서버당 하나의 용도로 사용 (하나의 운영체제, 프로그램)

안정적이나 남는 서버공간 방치되고 비효율적

 

하이퍼 바이저 기반 가상화 (VM 방식)

VM 기반 독립적인 공간의 가상환경 서버 구축

호스트 시스템에서 다수 게스트 OS 구동 가능, 하드웨어 및 각 VM 모니터링 역할

VM, 게스트 OS, 애플리케이션 순차적으로 실행하여 복잡하고 무거움

 

도커 (컨테이너 방식)

하이퍼 바이저, 게스트 OS가 없어 가벼움

호스트 OS 위에 이미지 배포하여 간편히 실행

 

차이점

얼마나 격리 시키는지의 차이

도커는 커널 (운영체제 핵심 구성요소)을 공유함

 

도커 컨테이너의 격리 방법

리눅스의 Cgroup, 네임스페이스 사용함

 

6. 이미지로 컨테이너 만들기

이미지는 컨테이너가 시작될 명령어, 파일 스냅샷 (디렉터리, 파일 카피한것)을 가지고 있음

 

이미지로 컨테이너를 만드는 순서

6-1. 도커 클라이언트에서 이미지 입력

6-2. 도커 이미지의 파일 스냅샷을 컨테이너의 하드 디스크에 옮김

6-3. 이미지에서 가지고있는 컨테이너 시작 명령어 실행

 

7.  Cgrop, 네임스페이스를 사용 가능한 이유

두 요소는 리눅스에서 사용 가능한 요소

윈도우, 맥 운영체제에서 사용 가능한 이유는 도커가 내부적으로 리눅스의 VM, 커널을 사용하기 때문

'docker' 카테고리의 다른 글

3. 도커 이미지 만들기  (0) 2024.05.01
2. 도커 클라이언트 명령어  (0) 2024.04.22