Docker

소복치·2024년 2월 25일

1. Docker 란?

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

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

서버에서 이야기하는 컨테이너도 비슷한데, 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순히 시켜준다.

2. Container

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

우리에게 익숙한 VirtualBox(VM) 같은 가상머신은 호스트 OS위에 게스트 OS전체를 가상화 하여 사용하는 방식이다. 이방식(윈도우에서 리눅스를 돌리는거)은 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 별로 추천하지 않는다.
어쨋든 성능 문제가 있었고 이를 개선하기 위해 프로세스를 격리 하는 방식이 등장한다.

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

3. Image


도커에서 컨테이너와 함께 중요한 개념이다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다.
컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

말그대로 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다.

4. docker vs docker-compose

주로 단일 컨테이너를 빌드하고 실행하는데 사용됩니다. 예를들어 웹 서버, 데이터베이스 서버 및 애플리케이션 서버와 같이 독립적인 서비스를 단일 컨테이너로 빌드하는데 유용하다.

여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하는데 사용된다.
예를들어, 웹 애플리케이션과 그에 연결된 데이터베이스, 캐시 서버 등 여러 컨테이너로 구성된 애플리케이션 스택을 정의하는데 유용하다.

즉, docker는 개별 컨테이너를 docker-compose는 멀티 컨테이너 애플리케이션 스택을 정의하고 실행하기 위한 도구이다.

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

profile
오늘 터져도내일 다시극복

0개의 댓글