도커의 개념과 이해

zizi·2023년 7월 24일
post-thumbnail

1. 도커란?

컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 개발, 배포, 실행하는 데 사용되는 오픈 소스 기술입니다.

2. 컨테이너 기반 가상화

가상화는 하나의 물리적 리소스(컴퓨터, 서버 등)를 여러 개의 가상 환경으로 나누어 사용하는 기술입니다.
컨테이너 기반 가상화는 이러한 가상화를 구현하는 방법 중 하나입니다.
컨테이너는 애플리케이션과 해당 의존성들을 격리된 환경에 패키징하여 실행하는데 사용됩니다.

2-2. 참고) 가상머신과 컨테이너 기반 가상화 차이

1) 가상머신(VM)

  • 가상머신은 하나의 물리적인 서버(호스트 시스템) 위에서 여러 개의 독립된 운영 체제를 가상화하여 실행하는 기술입니다.
  • 물리적인 서버(호스트 시스템) : 컴퓨터 하드웨어가 실제로 존재하는 실제 서버를 말합니다. 쉽게 말하면, 우리가 손으로 만질 수 있는 실제 컴퓨터를 의미합니다.

2) 컨테이너 기반 가상화

  • 컨테이너 기반 가상화는 하나의 호스트 시스템의 운영 체제 커널을 공유하면서, 격리된 환경에서 여러 개의 프로세스를 실행하는 기술입니다.
  • 컨테이너는 애플리케이션과 해당 의존성들을 격리된 환경(컨테이너)에 패키징합니다. 이 컨테이너 안에는 애플리케이션 실행에 필요한 라이브러리, 바이너리, 설정 등이 포함됩니다.
  • 컨테이너는 가상 머신보다 가벼우며, 각 컨테이너는 독립적인 프로세스 그룹으로 실행되지만, 호스트 시스템의 운영 체제 커널을 공유하여 오버헤드와 성능문제를 최소화합니다.
  • 컨테이너는 애플리케이션의 일관성과 이식성을 보장하며, 배포와 확장이 용이합니다.
  • 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.

3. 이미지

  • 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable).
  • 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다.

  • 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없습니다. 이제 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 됩니다. 한 서버에 여러개의 컨테이너를 실행할 수 있고, 수십, 수백, 수천대의 서버도 문제없습니다.

  • 도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있습니다. 현재 공개된 도커 이미지는 50만개가 넘고 Docker hub의 이미지 다운로드 수는 80억회에 이릅니다. 누구나 쉽게 이미지를 만들고 배포할 수 있습니다.

4. 레이어

  • 레이어란 기존 이미지에 추가적인 파일이 필요할 때 다시 다운로드 받는 방법이 아닌 해당 파일을 추가하기 위한 개념입니다.
  • 도커 이미지를 레이어 저장방식을 택하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해줍니다.
  • 효율적으로 이미지 관리를 할 수 있습니다.

5. 도커파일

  • 도커는 이미지를 만들기 위해 Dockerfile이라는 파일에 자체 DSL(Domain-specific language)언어를 이용하여 이미지 생성 과정을 적습니다.
  • Dockerfile로 소스와 함께 버전 관리 되고 원한다면 누구나 이미지 생성과정을 보고 수정할 수 있습니다.

[도커 관련 좋은 참고글]

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

profile
좋았다면 추억이고 나빴다면 경험이다.🍀

2개의 댓글

comment-user-thumbnail
2023년 7월 24일

글 잘 봤습니다.

1개의 답글