반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DevOps Tasks

Docker 란? 본문

Docker

Docker 란?

데밥스 2023. 12. 23. 23:01
728x90
반응형

Docker 란?

 

 

컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구

도커는 서비스를 운용하는데 필요한 실행환경, 라이브러리, 소프트웨어, 시스템 도구, 코드 등을 컨테이너라는 표준화된 단위로 추상화한다.

 


Dockerizing

 

Docker 컨테이너를 사용하여 응용프로그램(application)을 패킹 ( packing ), 배포 ( deploying ), 실행 ( running ) 하는 전 과정

한 마디로 우리가 작업하던 Docker 관련 일들이 모두 도커라이징 과정의 일부

 

Docker와 Virtual Machine

Virtual Machines

물리적 컴퓨터에서 실행하는 모든 소프트웨어를 실행하는 데 사용할 수 있는 ”소프트웨어 컴퓨터

 

Docker Host

하나의 HostOS 위에 Docker를 설치하여 그 위에 각각의 Application 환경들을 설치 / 운영하는 형태

 

VM에는 Guest OS가 깔리고 Docker Conatiner는 그렇지 않다.

VM은 하나씩 늘 때마다 OS를 위한 자원을 할당해주어야 하는 반면에 도커는 Appliation을 구동하는데 필요한 패키지만 있으면 컨테이너를 구동시킬 수 있다.

Docker의 컨테이너는 Host OS의 커널을 공유한다.

자원의 효율성 측면에서 차이가 난다.


Docker Image Layers

 

docker pull image

 

Docker Layer

 

 

docker pull 시 여러 개로 분리된 조각을 내려받는 것처럼 보인다.

이렇게 분리된 조각을 Layer 라고 부른다.

Layer는 도커 이미지가 빌드될 때 Dockerfile에 정의된 명령문을 순서대로 실행하면서 만들어진다.

이미지를 빌드할 때마다 이미 생성된 레이어가 캐시 되어 재사용되기 때문에 빌드 시간을 단축할 수 있다.

RUN, ADD, COPY 이 3가지 명령어들로 생성된 Layer는 파일 용량을 커지게 만들고 이미지 생성하는 시간도 길어지게 한다.

배포 파이프라인을 단축하기 위해선 해당 부분들도 고려하여 Dockerfile을 최적화해야 한다.

 

 

Docker Layers


반응형

Dockerfile

FROM ubuntu:22.04

 

base 이미지 지정, 일반적으로 잘 알려진 공개 이미지 사용

이미지 경량화를 위해 alpine과 slim 형식 등의 이미지 사용

 

ENTRYPOINT ["java","-jar","/app.jar"]

 

이미지를 컨테이너로 띄울 때 항상 실행되어야 하는 커맨드 지정

이 커맨드로 실행된 프로세스가 죽을 때, 컨테이너도 따라서 종료

 

RUN make /app

 

 

SHELL에서 커맨드를 실행하는 것처럼 이미지 빌드 과정에서 필요한 커맨드 실행

 

CMD python /app/app.py

 

이미지를 컨테이너로 띄울 때 디폴트로 실행할 커맨드

컨테이너 실행 시 실행

 

ENV FOO=/bar

 

컨테이너 안의 환경 변수를 정의 (환경변수)

 

ARG FOO=hello

ARG FOO=${var}

 

이미지 빌드를 할 때 사용하는 변수

Dockerfile에서의 변수

 

EXPOSE 8080

 

컨테이너가 노출하는 포트

 

 

컨테이너 통신

 

# Dockerfile

# 2 Layer Create

RUN apt-get update
RUN apt-get install vim

# 1 Layer Create

RUN apt-get update && apt-get install vim

 

 

RUN 명령을 여러 개 지정하는 경우 여러 개의 Layer가 생성한다.

RUN 명령을 한 줄로 지정하는 경우 하나의 Layer 생성한다.

  • && 등을 이용해 명령어를 연결해 주는 것으로도 이미지의 크기를 줄일 수 있다.
728x90
반응형

'Docker' 카테고리의 다른 글

Docker Command  (1) 2023.12.24
Docker Multi-Stage Build 로 이미지 사이즈 및 빌드 속도 최적화하기  (2) 2023.12.23