Docker - 1. Docker 이해하기

최창우·2022년 11월 1일
0

Docker

목록 보기
1/7
post-thumbnail

📌목차

1. 도커와 컨테이너
2. 가상화 방식 비교
3. 이미지

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

📕 도커와 컨테이너

컨테이너라 하면 배에 실는 네모난 화물 수송용 박스를 생각할 수 있는데 각각의 컨테이너 안에는 옷, 신발, 전자제품, 술, 과일등 다양한 화물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러등 다양한 운송수단으로 쉽게 옮길 수 있다.

서버에서 이야기하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있다.

즉 한마디로 설명하면

    1. 컨테이너 : 다양한 프로그램 및 실행환경등을 넣어놓은 독립적인 공간
      - 실제 컨테이너 : 배송지에서 요청한 물품등을 넣어놓은 독립적인 공간
    1. 도커 : 컨테이너들을 관리(실행 및 배포 등)하는 역할
      - 컨테이너들을 운반하는 화물선
  • 위 설명을 이해하기 위한 그림은 아래와 같은데, 하나의 컨테이너는 텐서플로우를 위한 환경이고, 다른 하나의 컨테이너는 파이토치를 위한 환경임

📕 가상화 방식 비교

컨테이너는 격리된 공간에서 프로세스가 동작하는 기술입니다. 가상화 기술의 하나지만 기존방식과는 차이가 있습니다.

📖 기존 가상화 방식

기존의 가상화 방식은 주로 OS를 가상화하였음.

  • 이말의 의미는 호스트 OS위에 게스트 OS 전체를 가상화 수행
  • 여러가지 OS 가상화 가능 ( 윈도우에서 리눅스를 돌린다던가.. )
  • 사용법이 간단
  • 무겁고 느림
  • 예 : VMware, VirtualBox

📖 도커의 가상화 방식

도커에서는 OS가 아닌 프로세스를 격리하는 방식을 사용

  • 리눅스에서는 이 방식을 리눅스 컨테이너라고 함
  • 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작
  • CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없음

구조 차이를 보면 아래 그림과 같음

  • 가상머신은 Hypervisor를 통해 OS를 가상화 수행
  • 도커는 Docker engine을 통해 프로세스를 가상화 수행

📕 이미지

컨테이너 생성에 필요한 파일과 설정값등을 포함하고 있는것

  • 상태값을 가지지않고 변하지않는 값이다. (변경불가/생성,삭제는 가능)
  • 컨테이너를 실행하기 위한 모든 정보를 가지고있기 때문에 이것저것 설치할 필요가 없다.

📖 특징

  • 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너내에 저장되는것이지 이미지가 변경되는게 아님
  • 한개의 이미지로 여러개의 컨테이너 생성 가능
    - Tensorflow Image 하나로 A,B,C 세개의 컨테이너 생성
    • Pytorch Image 하나로 D,E,F 세개의 컨테이너 생성
    • 각 컨테이너는 동일한 이미지로 생성되었다 하더라도 서로 독립되어있다!
  • 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있음
  • 미리 만들어놓은 이미지를 다운받거나, 도커파일로 이미지생성 가능

📚 Reference

https://jungeeyou.github.io/docker-1-post/

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글