본문 바로가기

Backend Study/Server

도커란 무엇일까?

[도커란?]

도커란, 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼이다. 가상화란 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술이고, 컨테이너란 프로세스를 격리해 독립된 환경을 만드는 기술이다.

 

[컨테이너란?]

컨테이너는 베이스 환경의 Host OS를 공유하면서 필요한 프로세스만 격리하는 방식이다. 커널을 공유하기 때문에 호스트의 OS 기능을 모두 사용할 수 있다. 
컨테이너 위에서는 호스트 OS와 다른 OS를 구동할 수 없다는 단점이 있지만, 격리시킬 애플리케이션과 거기에 필요한 파일이나 특정 라이브러리 등 종속 항목만 포함하기 때문에 배포를 위해 생성되는 이미지 용량이 작다. 

[이미지란?]

가상 머신이나 컨테이너 또는 프로그램을 실행하는데 필요한 파일과 라이브러리, 설정 등을 가지고 있는 파일이다. 이미지는 레이어라는 계층 구조로 이루어져 있는데, 변경 사항이 생기면 새로운 레이어를 추가해서 기록한다. => 이미지 전체를 새로 받지 않고 해당 레이어만 받는 것으로 이미지를 업데이트 할 수 있다. 

 

[그래서 도커란 무엇일까?]

도커는 컨테이너 기반의 가상화 플랫폼이다. 도커를 이용하면 이미지를 실행시켜 컨테이너로 만들거나, 생성된 컨테이너를 관리하거나, 컨테이너를 다시 이미지로 만드는 작업을 쉽게할 수 있다. 

도커란 개발 과정에서 다른 라이브러리와 충돌하는 것을 방지하기 위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때, 혹은 배포 중인 서비스를 받아서 실행할 때 유용하다. 

 

 

[도커 컴포즈란?]

단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리도구이다. 

사용 이유: 여러 개의 컨테이너가 하나의 애플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. ex) 웹 애플리케이션을 테스트하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두개의 컨테이너를 각각 생성해야한다. 

 

여러개의 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작한다. 도커 컴포즈의 설정 파일은 도커 엔진의 run 명령어의 옵션을 그대로 사용할 수 있으며, 각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의할 수 있다. 


참고) https://velog.io/@markany/%EB%8F%84%EC%BB%A4%EC%97%90-%EB%8C%80%ED%95%9C-%EC%96%B4%EB%96%A4-%EA%B2%83-1.-%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80