티스토리 뷰

Udemy Docker & Kubernetes : 실전 가이드 정리

 

 

컨테이너

특징

표준화된 개발환경

각자 로컬 환경이 달라도 재현성을 보장한다. 즉, 의존성과 종속성과 관계없이 하나의 공통된 개발 환경을 제공해준다.

 

이동/공유/마이그레이션 용이

단일의 구성 파일만 있으면 쉽게 다른 곳에서도 구축할 수 있다.

 

다른 컨테이너와 독립성 유지

각각의 컨테이너는 서로 공유된 상태나 자원이 없이 격리되어 영향을 미치지 않는다.

 

 

VM 과의 비교

컨테이너
내장된 OS를 사용, 도커 엔진을 기반으로 여러 컨테이너를 가동할 수 있음
VM 대비 다른 OS나 시스템에 미치는 영향이 적고 빠름, 최소한의 디스크 공간을 사용, 이미지와 구성파일로 공유/재구축/배포가 쉬움

 

VM / Virtual OS

장점: 분리된 환경, 환경별로 구성을 다르게 할 수 있음, 안정적으로 공유 및 재생산이 가능

단점: 낭비되는 공간 발생, 성능 저하(느린 속도), 디스크 공간 많이 차지, 공유/재구축/배포가 까다로움

 

 

Images & Container

도커 이미지의 특징

레이어 기반 아키텍처
명령어 별로 이미지 레이어를 생성하고 캐시를 사용함
동일한 디렉토리에 코드 변경이 없다면 캐시된 이전 명령 결과들을 사용하며 빠르게 빌드됨


이미지는 읽기 전용
소스 코드가 수정되면 이미지를 다시 빌드해야 함 (빌드 이미지는 정적임)

 

→ 도커의 빌드 최적화를 위해 알아두면 중요한 특징

 

 

이미지 (Image)

실제 코드와 코드 실행에 필요한 도구를 포함한 블루프린트

컨테이너의 템플릿으로, 설정 명령과 소스 코드가 포함된 공유 가능한 패키지

 

컨테이너 (Container)

이미지를 기반으로 실행하는 인스턴스, 소프트웨어 유닛

 

 

Cheat Sheet

# 도커 프로세스 모두 조회
docker ps -a 
# 현재 실행중인 프로세스 조회
docker ps 
# 특정 컨테이너 중지
docker stop <container-name>

# -it: 컨테이너 내부에서 호스팅 머신으로 대화형 세션을 노출
# 이미지 인스턴스로 컨테이너 실행
docker run -it <image>
#   -t, --tty                              Allocate a pseudo-TTY
#  -i, --interactive                      Keep STDIN open even if not attached

# 이미지로 특정 포트로 pubilsh 하여 컨테이너 실행
docker run -p <현재로컬머신포트>:<컨테이너내부포트> <image>
# ex. docker run -p 3000:80 33487ba6abd
# -p, --publish list                     Publish a container's port(s) to the host

# 외부 이미지 가져오기
docker pull <images>

# 현재 디렉토리의 dockerfile 로 이미지 빌드
docker build .

 

댓글