섹션 2 - Docker 이미지 & 컨테이너
Docker
컨테이너 기술: 컨테이너를 생성하고 관리하는 도구
필수 준비물: 리눅스, 도커 엔진, 컨테이너, 이미지
Container
이미지의 실행 인스턴스 (애플리케이션)
즉, 이미지를 기반으로 컨테이너를 실행시키는 것
장점
이미지만 있으면 어떤 컴퓨에서든지 독립적인 환경으로 실행할 수 있음
다음과 같은 경우에 용이함
개발/배포 환경이 다른 경우
모든 팀원이 같은 환경에서 같은 프로젝트 작업을 하는 경우
환경이 다른 프로젝트들을 작업해야 하는 경우
환경: runtimes, languages, frameworks, libraries
각 VM에 OS 설치 필수 (같은 OS를 쓴다고 해도 다 설치해줘야 함)
내 컴퓨터에 리눅스만 있으면 각 컨테이너에 OS 설치할 필요 없음
내 컴퓨터 리소스를 크게 허비
내 컴퓨터 리소스를 적게 허비
whole machine을 캡슐화
환경 / 코드만 캡슐화
Image
컨테이너 실행을 위한 탬플릿
앞서 말한 환경(runtimes, languages, frameworks, libraries) + code으로 구성
read-only: 한번 이미지가 생성되면 변경될 수 없음
Layer-based: 이미지는 다수의 레이어로 구성되어 있음
Layer 기반 아키텍처
Layer: 각 레이어는 하나의 변경 사항을 담고 있으며, 파일 시스템에서 파일을 추가하거나 제거하거나 수정하는 작업을 수행
각 레이어는 이전 레이어에 대한 변경 사항을 포함한다.
Dockerfile에서 모든 명령문은 레이어를 나타내고, 각 레이어는 캐쉬된다.
명령문(레이어)의 실행 결과가 달라지면 다시 실행한다.
즉, 코드를 수정해서 다시 이미지를 빌드한다면 아래 명령문의 실행 결과는 이전과 달라질 것이다. 따라서 다시 이미지 빌드할 때 아래 명령문의 이전 캐쉬는 적용되지 않는다. 이 내용을 고려하여 최적화가 가능하다.
최적화: 캐쉬된 걸 사용해도 되는 명령문은 레이어의 실행 결과가 달라지는 부분 이전으로 배치
Docker 사용터미널 명령어 정리
Dockerfile 명령문 정리
https://docs.docker.com/get-started/docker-concepts/building-images/writing-a-dockerfile/
Last updated