[과제 알림이] Docker 개념 정리

overwell24·2024년 3월 7일

과제 알림이

목록 보기
5/6
post-thumbnail

맥에서 개발한 프로젝트가 우분투에서 돌아가지 않아 고생을 했었다.
그 과정에서 개발 환경과 배포 환경의 불일치 문제를 해결해주는 Docker를 공부하고 정리해보고자 한다.


Docker

개발자가 컨테이너를 빌드, 배포, 실행, 업데이트, 관리할 수 있는 오픈 소스 플랫폼.


Docker 이미지

코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 경량의 독립 실행형 소프트웨어 패키지.


Docker 컨테이너

컨테이너는 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키지화하는 소프트웨어의 표준 단위.


Docker 레이어

파일시스템의 변경사항을 캡처하는 단위.

read-only 레이어

  • 모든 base 이미지는 read-only 레이어이다.
  • 컨테이너 실행 시 변경할 수 없다.

read-write 레이어

  • 컨테이너 실행 시 이미지 레이어 위에 추가되는 쓰기 가능(read-write) 레이어이다.
  • 컨테이너 내에서 변경된 데이터는 이 레이어에 저장한다.
  • 이미지 레이어에 영향을 주지 않고 컨테이너만의 독립적인 환경을 제공한다

Docker 레이어 관리 방식

read-only 레이어

read-only 레이어, 즉 이미지 레이어는 여러 레이어들로 구성되어 있다.
도커에서는 여러 이미지 파일들을 관리할 때, 이미지들에서 중복되는 영역을 하나의 레이어를 통해 관리한다.
이것은 중복되는 레이어의 경우 다운받지 않아도 된다는 것을 뜻한다.

read-write 레이어

기존의 image에 내용이 추가될 경우 read-write layer에 추가한다.
image 의 기존 내용이 변경될 경우에는 Copy on Write 전략을 사용한다.

Docker 레이어 관리 방식의 장점 ( Copy-on-Write )

  • 디스크 공간 절약
    CoW 전략 덕분에 여러 컨테이너가 동일한 이미지 레이어를 공유할 수 있다.
    이로 인해 중복 데이터를 줄이고 디스크 공간을 절약할 수 있다.

  • 빠른 컨테이너 생성
    새로운 컨테이너를 생성할 때, 기존 이미지 레이어를 복사할 필요가 없다.
    따라서 컨테이너 생성 시간이 단축된다.

  • 변경 사항 격리
    각 컨테이너는 자체 쓰기 가능한 레이어를 가지므로, 컨테이너 간에 변경 사항이 격리되어 영향을 주지 않는다.


Docker 파일 시스템


컨테이너 host os 커널 공유 테스트

host os (ubuntu 20.04)

overwell24@ubuntu-server:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"

overwell24@ubuntu-server:~$ uname -r
5.15.0-91-generic # 커널 버전

Docker 컨테이너 (ubuntu 18.04)

root@915161cd531f:/ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"

root@915161cd531f:/ uname -r
5.15.0-91-generic # 커널 버전

Docker 컨테이너 (centos8)

[root@48b3b354f9b3 /] cat /etc/redhat-release
CentOS Linux release 8.4.2105

[root@48b3b354f9b3 /] uname -r
5.15.0-91-generic # 커널 버전

0개의 댓글