반응형
Docker란 ⭐
- 컨테이너 개념을 도입해서 데이터/프로그램을 격리시키는 기능을 제공하는 SW
- 컨테이너 환경을 손쉽게 만들 수 있는 기능과 각 컨테이너를 손쉽게 동작할 수 있는 도커 엔진 제공
Linux 컨테이너와 VM
- 크기 및 패키징
- 컨테이너 : 메가바이트 단위의 크기, 애플리케이션과 그 실행에 필요한 최소한의 파일만 포함. 종종 단일 기능을 수행하는 마이크로서비스를 컨테이너에 패키징함
- VM : 기가바이트 단위의 크기, 자체 운영 체제를 포함함. 여러 리소스 집약적인 작업을 동시에 수행할 수 있으며, 전체 서버, OS, 데스크탑, 데이터베이스, 네트워크 등을 추상화, 분할, 복제 에뮬레이션함
- 이동성 및 확장성
- 컨테이너 : 경화 속성과 공유 운영 체제로 인해 여러 환경 간에 쉽게 이동할 수 있으며, 확장이 상대적으로 쉬움
- 운영 체제를 가지고 있어, 이동성이 상대적으로 낮으며, 확장하기 위해서는 추가 리소스가 필요함
- 리소스 분리
- 컨테이너 : 호스트 OS 커널을 공유하므로 리소스 분리가 상대적으로 덜 격리됨
- VM : 자체 운영 체제를 가지고 있어 더 격리된 환경을 제공하며, 리소스를 더욱 강력하게 분리할 수 있음
- 용도
- 컨테이너 : 주로 미세한 서비스 또는 컨테이너 오케스트레이션 플랫폼 (Docker, Kubernetes)을 통해 애플리케이션 배포와 관리에 사용
- VM : 여러 개의 VM을 호스팅하는 가상화 환경에서 서버 가상화, 개발 환경 분리, 테스트 및 백업 등 다양한 용도로 활용
💡 컨테이너는 경량하고 이동성이 뛰어나며, 주로 애플리케이션 수준의 격리를 제공
💡 VM은 더 무거우며 격리가 강화되어, 다양한 용도로 활용되지만 이동성이 상대적으로 낮음
컨테이너와 도커 엔진 ⭐
- 컨테이너 : 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술
- 도커 엔진 : 도커 소프트웨어의 본체이며, 도커 엔진이 있어야 컨테이너를 생성하고 실행시킬 수 있음
컨테이너를 만들려면 이미지 필요
- 이미지 : 컨테이너 실행에 필요한 파일과 설정 값들을 포함하고 있고, 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 변하지 않음
도커는 리눅스 컴퓨터에서 사용
- 리눅스 운영체제에서 사용하는 것을 전제로 만들어졌기 때문에 반드시 리눅스 운영체제 필요
- 컨테이너 안에서 동작하는 프로그램도 리눅스용 프로그램
데이터/프로그램을 독립된 환경에 격리해야 하는 이유 ⭐
- 데이터/프로그램이 격리되지 않으면 서로에게 영향을 줄 수 있고 서로에게 강한 의존성을 가질 가능성이 생김
- 공유하는 프로그램, 파일, 라이브러리 등을 한 개의 프로그램만을 위해 수정하게 되면 오류 발생 가능성이 있음 (다양한 버전)
프로그램 격리
도커 컨테이너를 사용해 프로그램을 격리하면 여러 프로그램이 한 서버에 실행되면서 발생하게 되는 문제들을 대부분 해결할 수 있음
자유롭게 옮길 수 있는 컨테이너 (장점) ⭐
- 도커만 설치되어 있으면, 운영체제가 달라도 컨테이너를 옮길 수 있음
- 도커를 이용하면 물리적 환경의 차이, 서버 구성의 차이를 무시할 수 있으므로, 운영 서버와 개발 서버의 환경 차이로 인한 문제를 방지할 수 있음
도커의 구조
- 물리 서버 → 리눅스 운영체제 → 도커 엔젠 → 컨테이너
- 도커에서는 컨테이너 속에 운영 체제의 주변 부분이 들어 있어 프로그램의 명령을 전달받고 이를 커널에 전달하는 구조
이미지와 컨테이너 ⭐
이미지의 역할
- 컨테이너의 설계도 역할 수행, 컨테이너를 생성하는데 사용
- 이미지를 사용하면 동일한 컨테이너느 여러 개 생성할 수 있음
- 컨테이너 실행에 필요한 파일과 설정 값들을 포함하고 있고, 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 변하지 않음
도커의 장점
- 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있음
- 서버 관리가 용이함
- 다루기 쉬움
도커의 단점
- 호스트 서버에 문제가 생기면 모든 컨테이너에 영향을 미침
반응형
'Infra > Docker' 카테고리의 다른 글
[Docker] Docker compose로 redis 실행하기 - redis.conf, requirepass, data 설정 (0) | 2024.04.21 |
---|---|
[Docker] Docker network, volume 이해 및 docker-compose에 network, volume 지정하기 (0) | 2024.04.21 |
Docker로 Spring Boot, Vue, MySQL 배포 및 연동하기 (0) | 2023.12.03 |
[Docker] 도커 허브 연결하기, 도커 컴포즈 docker-compose 파일 작성하기 (1) | 2023.12.03 |
[Docker] 도커 기본 명령어, 명령어 정리 (0) | 2023.12.03 |