Docker 개념 정리

민선규·2023년 9월 9일

기타

목록 보기
4/16
post-thumbnail

2. Docker 명령어
3. Docker 통신하기
4. Dockerfile 작성하기
5. Docker Compose
6. Docker 이미지 생성 및 저장하기

Docker

Docker는 개발을 하면서 한 번쯤은 들어볼만한 기술이다. 예전에 Docker에 대해서 간단히 다룬적이 있었는데 시간이 지남에 따라 많은 부분이 잊혀지게 되었고 이를 상기시키기 위하여 블로그에 정리글을 남기기로 하였다. Docker를 간단히 설명하면 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이며, 프로그램을 외부 환경과 격리시켜 구동할 수 있게 도와준다.

Docker를 왜 사용할까

Docker가 컨테이너 기반으로 외부 환경과 격리시켜서 프로그램을 실행시키는 소프트웨어인 것은 알게되었는데 어떤 이점으로 개발자에게 다가올까?

  1. 프로그램을 실행시키기 위한 OS의 일부 기능만 탑재하기 때문에 오버헤드가 적다.
  2. 개발 / 운영 환경의 통합이 보장된다.
  3. 이미지만 작성하고 서버로 배포하면 되기 때문에 시간이 단축되고 편리하다.

등 많은 이점을 가져올 수 있다.

VM vs Dokcer


VM은 하이퍼바이저라는 기술을 통해 여러 OS를 생성해서 사용하는 기술이다. 여기서 생성되는 OS를 Guest OS라고 하며 서로 독립적이며 시스템자원을 할당받아 사용한다.

반면에 Docker는 커널을 공유하고 필요한 OS만 일부 탑재하기 때문에 시스템 자원을 효율적으로 사용하는 장점이 있다.

Dokcer 컨테이너

Docker를 설명하였을 때 중요한 키워드는 컨테이너이다. 컨테이너란 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지이다.

그렇다면 Dokcer 컨테이너는 무엇일까? Dokcer 컨테이너는 이미지가 Dokcer 엔진에서 실행하면 생성되는 것을 의미한다. 즉 Dokcer 이미지 인스턴스로 보아도 무방하다.

컨테이너는 이미지 레이어에 컨테이너 레이어를 추가하는 것으로 생성되며 각 컨테이너는 서로 독립적으로 실행이 된다. 그리고 이미지가 중간에 바꾸게 되더라도 기존 컨테이너는 더 이상 이미지에 영향을 받지 않는다.

Dokcer 이미지

Dokcer 컨테이너를 생성하기 위하여 필요한 이미지라는 것에 대해서 알아보자. 이미지란 컨테이너를 생성할 때 필요한 요소로 실행파일, 설정 값들을 가지고 있는 읽기전용 파일이다. 이미지는 컨테이너 없이 존재가 가능하다.

Dokcer 레이어

Dokcer에는 레이어라는 개념이 있다. 예시로 설명을 하면 A라는 이미지에 값을 추가하고 싶다는 가정을 들어보자. 그렇다면 B라는 이미지(기존 A이미지 + 새로운 값)를 처음부터 만들어야 할 필요가 없다.

Dokcer 이미지는 이미지 레이어로 구성이 되어있는데 이 레이어는 Docker 이미지마다 공유할 수 있다는 특징을 가지고 있다. 그래서 기존 A라는 이미지를 가져와 새로운 값만 따로 추가를 해주면 된다!

이렇게 레이어라는 기술을 통해 생산성을 높일 수 있다!

  • 컨테이너 레이어 : 읽기/쓰기 모두 가능한 계층으로 최상단 레이어에 추가된다. 컨테이너를 실행하고 진행되는 변경사항은 이 계층에 저장이 된다.
  • 이미지 레이어 : 읽기 전용 계층으로 다른 컨테이너와 공유할 수 있는 레이어이다.

컨테이너 레이어는 독립적인 반면에 이미지 레이어는 다른 컨테이너와 공유할 수 있기 때문에 만약 A,B,C,D 라는 컨테이너 레이어에 각 각 a 이미지 레이어를 공유할 수 있다. 즉 서버의 증설이 간단하고 동일한 이미지 레이어를 공유하기 때문에 동일한 퍼포먼스를 기대할 수 있다.

Dokcer 파일

Dokcer 파일은 Dokcer 이미지를 생성하기 위한 설정 파일이다. 파일 내 작성된 구문으로 Docker 이미지가 만들어 진다.

참고 문서 및 링크

0개의 댓글