티스토리 뷰

도커

도커 이론 이해하기

산도리 2024. 12. 10. 11:44

도커 

- 오픈소스 컨테이너화 플랫폼

- 애플리케이션 개발, 배포 단순화

사용하는 이유

- 일관성 : 개발, 테스트, 운영 환경 차이 최소화

- 이식성 : 어떤 환경에서도 실행 가능

- 효율성 : cpu 자원을 효율적 사용 가능 /빠른 시작과 종료 가능

- 확장성 : 애플리케이션 확장 가능

도커 실행 요소 기본 정리

- 컨테이너 : 애플리케이션과 그 실행 파일들을 담은 패키지 / sw 실행되는 독립 환경

- 이미지 : 컨테이너를 생성하는 데 사용되는 불변의 템플릿 / 라이브러리, 설정 파일

- 도커 파일 : 이미지를 생성하기 위한 설정 파일

- 레지스트리 : 도커 이미지를 저장하고 배포하는 저장소

도커의 의존성

- 내가 만든 프로그램을 os 별로 컴파일하려면 비용 낭비 심해

- 어떤 os든, 환경이든 상관 없이 무조건 빌드 후 실행 가능한 기술: 컨테이너

- 도커는 컨테이너 기술을 대중화 시키는데 크게 기여

도커파일(Dockerfile)

1. FROM: 베이스 이미지를 지정

2. RUN: 컨테이너 내에서 명령어를 실행

3. CMD:

   1. 컨테이너가 시작될 때 실행할 명령어를 지정

   2. Dockerfile 내에서 여러 번 사용할 수 있으나, 마지막에 선언된 CMD만 유효하다는 점이 중요

4. COPY: 파일을 호스트 시스템에서 이미지로 복사

5. WORKDIR

   1. Dockerfile 내에서 작업 디렉토리를 설정

   2. 이후의 모든 RUN, CMD, ENTRYPOINT, COPY, ADD 명령어는 이 디렉토리를 기준으로 실행

   3. 디렉토리가 존재하지 않으면 자동으로 생성되며 절대경로나 상대경로 모두 사용 가능

   4. 만드는 이유: Docker build 해서 run 하게 되면 프로젝트 파일이 root 경로에있어 다른 파일과 충돌 위험

6. ENTRYPOINT:

   1. 컨테이너가 실행될 때 반드시 실행해야 하는 주 명령을 설정

   2. CMD와 같이 쓰면 CMD 는 ENTRYPOINT의 실행 인자로서 사용

   3. 최종적으로 마지막에 선언된 ENTRYPOINT만 유효(CMD와 같음)

도커 컨테이너 접속하기

1. -t : 터미널 에뮬레이션 제공

2. -i : 컨테이너와 상호작용

3. -it : 대화형 터미널 세션 생성

4. exec : 실행중인 컨테이너에 명령어를 입력해야 하는 경우 사용

도커 run

1. 명령어 구조 : docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

옵션

1. --rm

2. -it

3. -d

4. -p 80:80

5. --name

도커 레지스트리

시용 이유

컨테이너 이미지를 저장하고 배포하는 중앙 저장소

버전관리

배포 편의성

보안

자동화

멀티 스테이지 빌드 개념

- Dockerfile에서 하나의 컨테이너 이미지 빌드를 여러 단계로 나누어 관리하는 방법

- 사용방법

1. Dockerfile에 여러 개의 FROM 명령어를 사용하여 각 단계를 정의

2. 각 FROM 명령어는 서로 다른 베이스 이미지로 새로운 빌드 단계를 시작