[Docker] Docker 개념(Container, Image)
✔️ Docker 란
컨테이너를 사용해 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴
✔️ Containter 란
예시를 살펴보자. 윈도우 환경에서는 하나의 컴퓨터에서 여러 사용자로 나누어 사용할 수 있다.
각 사용자로 로그인하면, 독립적으로 원하는 프로그램을 설치해 이용가능하다. 컨테이너도 이와 비슷하다.
하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다.
하나의 컴퓨터 환경 내에서 여러 개의 미니 컴퓨터 환경을 구성할 수 있다.
Docker에서 미니 컴퓨터를 보고 컨테이너(Container)라고 부른다.
다시 그림으로 이해해보자.
컴퓨터 안에 컴퓨터들을 각각 컨테이너라고 이해하자. 가장 바깥에 있는 컴퓨터를 호스트 컴퓨터라고 부른다.
✔️ 컨테이너의 독립성
컨테이너에서 어떤 것들이 독립적이라는 것일까?
1. 디스크(저장 공간): 각 컨테이너마다 서로 각자의 저장 공간을 가지고 있다.
일반적으로 A 컨테이너 내부에서는 B 컨테이너 내부에 있는 파일에 접근할 수 없다.
2. 네트워크(IP, Port): 각 컨테이너마다 고유의 네트워크를 가지고 있다. 컨테이너마다 IP,Port 주소를 가지고 있다.
✔️ Image 란
닌텐도를 보면 한 기기에 여러가지 게임 칩을 꽂아 다양한 게임을 즐길 수 있다.
Docker에서는 닌텐도의 칩과 같은 역할을 하는 개념이 Image(이미지)이다.
예를 들어, MySql 서버를 이미지로 만들었다.(MySql 칩)
이 이미지를 Docker로 실행시키는 순간 MySql 서버가 컨테이너 환경에서 실행된다.
MySql을 일일이 복잡하게 설치할 필요없이 MySql 데이터베이스를 간단하게 사용할 수 있다.
이미지는 프로그램을 실행하는데 필요한 설치 과정, 설정, 버전 정보 등을 포함하고 있다.
즉, 이미지는 프로그램을 실행하는데 필요한 모든 것을 포함하고 있다.
JSCODE 박재성 강사님의 '비전공자도 이해할 수 있는 Docker 입문/실전' 강의자료를 바탕으로 작성되었습니다.