이 글은 시니어 멘토님의 피드백을 바탕으로 정리해보며 가상질문을 추가해 정리한 글입니다.
틀린 부분이나, 추가로 나올법한 질문이 있다면 댓글로 남겨주시면 정말 고맙겠습니다.
1. Docker를 왜 사용하나요?
도커는 컨테이너 기술 기반으로 한 오픈소스 가상화 플랫폼입니다. 도커를 사용하는 가장 큰 이유로 환경 독립성이 있습니다.
1-1. 환경 독립성
컨테이너는 애플리케이션을 혼경에 구애받지 않고 실행하는 기술입니다.
서버 운영 시, 서로 다른 환경에서도 동일한 컨테이너 이미지를 실행할 수 있습니다.
예를 들어, 도커를 사용하면 운영체제나 라이브러리의 차이로 인한 문제를 최소화 할 수 있습니다.
1-1-a. 서로 다른 환경에서도 동일한 컨테이너 이미지를 실행할 수 있다고 했는데, 도커 이미지에는 맥에 대한 이미지가 있고, 리눅스에 대한 이미지가 있고 등 다 다르다. 만약 모든 사람이 똑같은 이미지로 개발 할 수 있다면 왜 나눠놨을까요?
예를들어 ec2 인스턴스 환경이 ubuntu 라면, ubuntu 환경에 맞는 도커 이미지를 사용하여 어느 개발자가 그 이미지를 사용해도 같은 ubuntu 환경에서 개발할 수 있기 때문입니다.
1-2. 커널 차이
운영체제마다 커널이 다르며, 컨테이너는 호스트 운영체제의 커널을 공유합니다. 맥의 경우 Docker Desktop을 사용하여 리눅스 기반 가상 머신을 생성하고, 리눅스 커널을 사용합니다. 이로 인해 맥에서도 리눅스 컨테이너를 실행할 수 있게 됩니다.
1-2-a. 커널 차이에 대해 말씀해주셨는데, 커널이란 무엇인가요?
커널은 컴퓨터 운영체제의 핵심 구성 요소입니다. 이는 하드웨어를 추상화하여 응용 프로그램과 하드웨어간의 인터페이스 역할을 수행합니다. 즉, 커널은 사용자 수준의 소프트웨어와 하드웨어(CPU, 메모리 등) 간의 통신을 관리하는 역할을 합니다. 주요 작업으로는 파일 시스템 관리, 프로세스 관리, 장치 관리, 메모리 관리, 네트워크 관리, 인터럽트 처리, 입출력 통신 관리 등이 있습니다.
1-3. 라이브러리 및 의존성
애플리케이션은 종종 특정 라이브러리나 의존성에 의존합니다. 맥, 리눅스, 윈도우 등 각 운영체제에는 서로 다른 라이브러리가 있습니다. 따라서 이미지를 운영체제별로 나누어 놓으면 필요한 라이브러리를 포함시킬 수 있습니다.
1-4. 용량 최적화
모든 운영체제에 대한 이미지를 하나로 통합하면 이미지 크기가 커질 수 있습니다. 운영체제별로 이미지를 분리하면 필요한 운영체제만 다운로드하여 사용할 수 있습니다.
'DevOps > Infra' 카테고리의 다른 글
[k8s] 1. 쿠버네티스란 무엇인고? (0) | 2025.05.19 |
---|---|
Nginx, Let's Encrypt로 HTTPS 적용, 프론트 도메인 연결 방법 (AWS Route53 X) (1) | 2024.05.28 |
Github Actions, Docker로 가볍게 CI/CD 구현하기 (1) | 2024.05.28 |
Docker란? (도커 이미지, 컨테이너, 일관성) (0) | 2024.03.08 |
블루그린으로 무중단배포를 구현할때 Docker Compose를 왜 사용했나요? (0) | 2024.02.20 |