도커는 컨테이너를 생성하고 관리하는 기술이다.
컨테이너란?
컨테이너는 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지
코드를 실행할 수 있게 코드와 런타임, 라이브러리등을 패키징한 것이다.
이 때 같은 컨테이너는 누가, 어디에서 실행하든 항상 동일한 결과를 낸다.
컨테이너 기술은 대부분 현대 운영체제에 빌트인이 되어있거나 쉽게 설정할 수 있다.
왜 컨테이너를 사용할까?
동일한 결과 보장
로컬 환경에서 코드를 작성해서 정상적인 실행을 확인했는데 다른 컴퓨터에서는 런타임 버전 등 의존성이 달라 실행이 안 되는 경우가 있다.
만약 실행환경이 로컬 환경과 정확히 같았다면 벌어지지 않았을 상황이다.
컨테이너를 사용하면 런타임과 라이브러리 등이 코드와 함께 들어있기 때문에 항상 동일한 결과를 보장할 수 있다.
환경 분리
하나의 컴퓨터에서 두 개 이상의 프로젝트를 실행할 때 A 프로젝트의 툴과 B 프로젝트의 툴의 버전이 다르거나 서로 충돌할 수 있다. 그때마다 A 프로젝트의 툴을 삭제하고 B 프로젝트 툴을 설치하는 것은 번거롭다.
컨테이너 기술은 실행환경을 분리하기 때문에 이 같은 문제에서 보다 자유로울 수 있다.
가상머신 vs 도커 컨테이너
가상머신
사용자의 OS위에 가상머신을 설치한다.
가상머신은 자체 OS를 설치하고 라이브러리와 의존성을 설치하고 그 위에 응용프로그램을 올리는 컴퓨터안의 컴퓨터라고 할 수 있다.
가상머신은 컨테이너와 같이 실행환경과 코드가 같이 캡슐화되있어 다른 컴퓨터로 옮겨도 동일한 결과를 보장하고 다른 환경과 간섭이 일어나지 않는다.
하지만 가상머신은 그 자체로 하나의 컴퓨터이기 때문에 저장공간과 연산등이 많이 사용된다.
컨테이너
컨테이너는 가상머신를 설치하지 않고 컨테이너를 지원하기 위한 환경을 올리고 그 위에 도커엔진을 올린다.
그리고 그 위에 컨테이너를 올린다.
컨테이너는 가상머신과 다르게 무거운 OS를 가지고 있지 않다. (특정 운영 체제의 최소한 파일 시스템 등 애플리케이션 실행에 필요한 최소한의 환경은 가지고 있다. 하지만 그조차도 가상머신 OS 보다 가볍다.)
도커 컨테이너 VS 가상 머신
❗️컨테이너가 가상머신에 비해 장점만 가지고 있는 것은 아니다.
컨테이너는 호스트 OS의 커널을 공유하기 때문에 컨테이너에서 호스트 OS의 커널에 문제를 일으키면 다른 컨테이너에도 영향을 미친다.
가상 머신은 각각의 커널을 가져 컨테이너 기술보다 격리 수준이 높기 때문에 안정성이나 보안성이 더 좋다.
'Docker' 카테고리의 다른 글
[Docker] 🦮월월월월의 컨테이너와 네트워크 (0) | 2024.08.25 |
---|---|
Docker Compose 한 줄로 빌드부터 컨테이너 구동까지 해결하기 (0) | 2024.08.25 |
[Docker] 🦮월월월월의 도커 볼륨이란 (0) | 2024.07.28 |
[Docker] 🦮월월월월의 도커 이미지란 (1) | 2024.07.21 |
[Docker] 🐳도커 1편 (0) | 2024.07.14 |