1. 컨테이너란 무엇이며, 기존 가상 머신과 비교했을 때 주요 차이점은 무엇인가 ?
내 답안 :
- 컨테이너란 애플리케이션 실행에 필요한 설정 파일들을 패키징 하여 격리 시키는 기술이다. 기존 가상머신과 다르게 호스트의 커널을 공유하기 때문에 더 빠른 실행이 가능하며 OS 에 종속적이지 않기 때문에 어떤 OS에서든지 사용이 가능하다.
GPT 답안 :
- 컨테이너는 애플리케이션 실행에 필요한 모든 파일, 설정, 라이브러리를 포함한 격리된 환경입니다. **가상 머신(VM)**은 전체 운영체제를 가상화하지만, 컨테이너는 호스트 커널을 공유하며 가볍고 빠릅니다. 가상 머신은 무겁고 느리며 각각 고유의 OS가 필요하지만, 컨테이너는 더 적은 리소스를 사용하여 효율적으로 동작합니다.
2. 컨테이너가 제공하는 주요 이점 3가지를 설명하시오.
내 답안 :
- 경량성 : 호스트의 커널을 공유하기 때문에 더 빠르게 실행이 가능하다.
- 이식성 : 컨테이너는 동일한 환경에서 일관된 실행이 가능하다.
- 종속성 : 모든 의존성을 이미지에 포함하기 때문에 환경 불일치를 방지할 수 있다.
GPT 답안 :
- 경량성: 컨테이너는 호스트의 커널을 공유하므로 가상 머신보다 더 적은 자원으로 빠르게 실행할 수 있습니다.
- 이식성: 컨테이너는 어떤 환경에서도 일관되게 실행되므로, 개발 환경과 배포 환경 간의 차이를 줄일 수 있습니다.
- 종속성 관리: 컨테이너는 애플리케이션과 모든 의존성을 이미지에 포함하므로, 환경 설정 충돌을 방지합니다.
3. 컨테이너를 사용하여 애플리케이션을 배포할 때 필요한 필수 구성 요소는 무엇인가 ?
내 답안 :
- 이미지, Dockerfile, Docker
GPT 답안 :
- 이미지: 애플리케이션, 라이브러리, 설정을 포함한 패키지.
- Dockerfile: 이미지 빌드에 필요한 설정 파일.
- 컨테이너 런타임: Docker 같은 도구로 이미지를 실행.
- 네트워킹: 컨테이너 간 통신 설정.
- 스토리지: 데이터 보관을 위한 볼륨 설정.
4. 컨테이너의 이미지와 실제 컨테이너의 차이점은 무엇인가 ?
내 답안 :
- 컨테이너의 이미지는 청사진이고 실제 컨테이너는 청사진을 가지고 실행중인 상태이다.
GPT 답안 :
- 컨테이너 이미지는 애플리케이션과 종속성을 포함한 불변의 템플릿으로, 컨테이너를 생성하는 청사진입니다. 반면, 실제 컨테이너는 그 이미지를 기반으로 실행 중인 인스턴스입니다. 이미지는 변경되지 않지만, 컨테이너는 실행 중에 동적으로 동작하며, 종료되면 그 상태는 유지되지 않습니다.
5. 컨테이너 오케스트레이션이 필요한 이유는 무엇이며, 그 역할을 설명하시오.
내 답안 :
- 컨테이너 오케스트레이션은 여러개의 컨테이너를 자동으로 관리하기 위해 사용되며 MSA 방식의 복잡한 서비스들을 배포할 경우 사용하는 기술이다.
GPT 답안 :
- 컨테이너 오케스트레이션은 여러 컨테이너를 자동으로 관리하는 방식으로, 확장성, 자동 복구, 네트워크 설정 등을 관리합니다. 이를 통해 트래픽에 맞게 컨테이너 수를 자동 조정하고, 실패 시 자동 재시작 등의 기능을 수행합니다.
6. 컨테이너의 주요 활용 사례 2가지 이상을 설명하시오.
내 답안 :
- MSA : 서비스를 독립적으로 배포하여 관리에 용이하며 높은 확장성을 가지고 있다.
- 모르겠음
GPT 답안 :
- 마이크로서비스 아키텍처(MSA): 애플리케이션을 여러 독립적인 서비스로 나누어 각각을 컨테이너로 배포하고 관리.
- CI/CD 파이프라인: 자동화된 빌드, 테스트, 배포 과정에서 컨테이너를 사용해 일관된 환경에서 작업.
- 클라우드 네이티브 애플리케이션: 클라우드 환경에 최적화된 애플리케이션을 컨테이너로 배포해 유연하게 확장.
- 데이터 처리 및 분석: 컨테이너를 사용해 데이터 분석 작업을 분리된 환경에서 실행.
- 개발 및 테스트 환경 구성: 다양한 환경에서 일관된 테스트 및 개발 환경 제공.
- 하이브리드 클라우드 및 멀티 클라우드 배포: 컨테이너를 사용해 여러 클라우드 플랫폼에 애플리케이션을 쉽게 배포.
- 서버리스 컴퓨팅: 서버 인프라 관리를 최소화하고 컨테이너로 자동화된 애플리케이션 배포.
- 애플리케이션 격리: 서로 다른 애플리케이션을 격리해 안전하게 실행.
- IoT(사물 인터넷): 경량 컨테이너를 사용해 여러 IoT 장치에서 애플리케이션 실행.
7. Docker가 컨테이너 실행을 어떻게 관리하는지 설명하시오.
내 답안 :
- Docker 는 Image 기반으로 어플리케이션을 실행한다.
GPT 답안 :
- 이미지 기반 컨테이너 생성: Docker는 이미지를 사용하여 애플리케이션과 그 종속성을 포함한 컨테이너를 생성합니다. 각 컨테이너는 해당 이미지의 인스턴스입니다.
- 리소스 관리: Docker는 네임스페이스와 Cgroups을 사용해 프로세스, 네트워크, 파일 시스템을 격리하고, CPU, 메모리 등의 리소스 사용을 제한합니다.
- 컨테이너 실행: Docker는 컨테이너 내에서 프로세스를 실행하며, 실행 상태는 컨테이너 내에서만 유지됩니다. 종료 시 해당 프로세스는 사라지며, 새로 실행 시 동일한 환경을 다시 복원합니다.
- 네트워킹 및 통신: 각 컨테이너는 자체적인 가상 네트워크 환경에서 실행되며, Docker는 이들 컨테이너 간의 네트워킹을 관리합니다.
- 스토리지 관리: 컨테이너에서 생성된 데이터를 저장하기 위해 볼륨과 바인드 마운트를 사용해 영구적인 데이터를 관리합니다.
- 컨테이너 수명 관리: Docker는 컨테이너의 시작, 중지, 재시작 등의 수명 주기를 관리하며, 로그 및 모니터링도 가능하게 합니다.
8. 컨테이너 내부에서 실행되는 애플리케이션은 호스트 시스템과 어떻게 격리되는가?
내 답안 :
- 모르겠음 ...
GPT 답안 :
- 컨테이너는 네임스페이스를 통해 각종 자원을 격리하고, Cgroups를 통해 시스템 자원을 관리하며, 파일 시스템과 프로세스도 분리된 환경에서 동작합니다.
9. 컨테이너 네트워킹이란 무엇이며, 다양한 네트워크 모드에 대해 설명하시오.
내 답안 :
- 컨테이너 네트워킹이란 컨테이너끼리의 통신, 외부 시스템 간의 통신을 의미한다.
GPT 답안 :
- 컨테이너 네트워킹이란, 컨테이너 간의 통신과 외부 시스템과의 통신을 관리하는 기술입니다. 컨테이너는 독립된 네트워크 공간에서 실행되며, 네트워크 설정에 따라 서로 통신하거나 외부 시스템과 상호작용합니다.
- Bridge 네트워크: 기본 네트워크 모드로, 여러 컨테이너가 가상 브리지(가상 네트워크 스위치)를 통해 연결됩니다. 컨테이너는 같은 호스트에서 실행되는 다른 컨테이너와 통신할 수 있습니다.
- 예시: docker run 명령어로 실행된 컨테이너는 기본적으로 Bridge 모드를 사용합니다.
- Host 네트워크: 컨테이너가 호스트 시스템의 네트워크 스택을 직접 공유하여 성능을 향상시킬 수 있습니다. 하지만 컨테이너 간의 격리가 약해집니다.
- 예시: --network host 옵션을 사용하여 컨테이너를 실행하면, 호스트 네트워크를 공유하게 됩니다.
- None 네트워크: 네트워크를 사용하지 않는 모드로, 완전히 격리된 상태로 실행되며 외부 네트워크와의 통신이 차단됩니다.
- 예시: 테스트 환경에서 외부 네트워크와 연결을 차단하고 싶을 때 사용합니다.
- Overlay 네트워크: 다중 호스트에서 실행되는 컨테이너들이 통신할 수 있도록 가상 네트워크를 생성합니다. 주로 Docker Swarm이나 Kubernetes와 같은 오케스트레이션 도구에서 사용됩니다.
- 예시: 여러 호스트 간의 네트워크를 구축하여 컨테이너 간에 분산된 통신을 지원합니다.
- MACvlan 네트워크: 각 컨테이너에 고유한 MAC 주소를 부여하여 컨테이너를 물리적 네트워크와 연결합니다. 컨테이너가 네트워크 상에서 고유 장치로 인식되며, 고급 네트워크 설정에 사용됩니다.
- Bridge 네트워크: 기본 네트워크 모드로, 여러 컨테이너가 가상 브리지(가상 네트워크 스위치)를 통해 연결됩니다. 컨테이너는 같은 호스트에서 실행되는 다른 컨테이너와 통신할 수 있습니다.
10. 컨테이너 볼륨의 역할은 무엇이며, 왜 필요한지 설명하시오.
내 답안 :
- 컨테이너의 정보를 저장하기 때문에, 컨테이너가 종료되더라도 데이터가 사라지지 않는다.
GPT 답안 :
- 컨테이너 볼륨(Volume)은 컨테이너 외부에 데이터를 저장하는 방법으로, 컨테이너가 종료되더라도 데이터가 유지되도록 합니다. 기본적으로 컨테이너 내부에서 생성된 데이터는 컨테이너가 종료되면 사라지지만, 볼륨을 사용하면 데이터를 영구적으로 저장할 수 있습니다. 이를 통해 데이터베이스나 로그 파일 같은 중요한 데이터를 보존할 수 있습니다.
'개인공부' 카테고리의 다른 글
VMware Fusion, RKE2 Master Node 설치 (1) (3) | 2024.12.09 |
---|---|
Socket.IO (0) | 2024.12.03 |
Kafka 란 무엇인가 ? (0) | 2024.10.02 |
도커의 이해 (0) | 2024.09.29 |
컨테이너의 이해 (0) | 2024.09.26 |