728x90
이전에 읽으면 좋을 포스팅 : https://rebornbb.tistory.com/entry/IT-Docker%EB%9E%80
도커 컨테이너에 대해 알게된 특징
독립적인 실행 환경
왜 localhost로 다른 컨테이너를 호출할 수 없었을까?
- 네트워킹 모델: 도커 컨테이너는 기본적으로 각각 고유한 네트워크 인터페이스를 가지고 있습니다. 즉, 컨테이너 내부에서 다른 컨테이너의 IP 주소를 알아야만 통신이 가능합니다. localhost는 해당 컨테이너 자체를 가리키기 때문에, 다른 컨테이너에 접근할 수 없습니다.
- 격리: 도커 컨테이너는 서로 격리되어 있어, 각 컨테이너는 마치 별도의 서버처럼 작동합니다. 이는 컨테이너 간의 간섭을 최소화하고, 애플리케이션의 안정성을 높이는 데 기여합니다.
컨테이너 간 통신은 어떻게 할까?
- 컨테이너 네트워크: 도커는 다양한 네트워킹 모델을 제공하여 컨테이너 간의 통신을 용이하게 합니다.
- 브릿지 네트워크: 가장 일반적인 모델로, 각 컨테이너에 고유한 IP 주소를 할당하고, 이들을 하나의 가상 스위치에 연결합니다. 컨테이너는 서로의 IP 주소를 통해 통신할 수 있습니다.
- 오버레이 네트워크: 복잡한 네트워크 환경에서 다수의 호스트에 걸쳐 컨테이너를 관리할 때 유용합니다. 가상 네트워크를 생성하여 컨테이너를 연결하며, 서비스 디스커버리 기능을 제공합니다.
- Docker Compose: 여러 개의 컨테이너를 정의하고 관리하는 도구입니다. docker-compose.yml 파일을 통해 컨테이너 간의 네트워킹 설정을 간편하게 구성할 수 있습니다.
이와 같은 특징에 대한 장점과 단점
- 장점:
- 격리: 각 애플리케이션을 독립적인 환경에서 실행하여 서로 간의 영향을 최소화할 수 있습니다.
- 가볍고 빠름: 하이퍼바이저를 사용하는 가상 머신에 비해 가볍고 빠르게 실행됩니다.
- 일관성: 개발 환경과 운영 환경의 차이를 줄여 배포 과정을 간소화할 수 있습니다.
- 확장성: 필요에 따라 컨테이너를 쉽게 추가하거나 제거할 수 있습니다.
- 단점:
- 복잡성: 다수의 컨테이너를 관리하기 위한 추가적인 학습이 필요할 수 있습니다.
- 성능 오버헤드: 너무 많은 컨테이너를 실행하면 성능 저하가 발생할 수 있습니다.
도커 컨테이너 특징 추가 정리
도커 컨테이너는 애플리케이션을 패키징하고 실행하는 데 있어 혁신적인 변화를 가져왔습니다. 앞서 언급하신 내용 외에 도커 컨테이너의 가장 큰 특징들을 몇 가지 더 자세히 알아볼까요?
1. 경량성과 효율성
- 빠른 시작: 컨테이너는 호스트 OS의 커널을 공유하기 때문에 가상 머신처럼 무거운 하이퍼바이저를 사용하지 않습니다. 이 덕분에 매우 빠르게 시작되고 종료됩니다.
- 낮은 자원 소비: 컨테이너는 필요한 최소한의 자원만 사용하도록 설계되어 있어 서버 자원을 효율적으로 활용할 수 있습니다.
- 높은 밀도: 동일한 하드웨어에서 더 많은 컨테이너를 실행할 수 있어 서버 자원 활용률을 높일 수 있습니다.
2. 이식성
- 어디서든 실행: 도커 엔진이 설치된 모든 환경(클라우드, 온프레미스, 랩톱 등)에서 동일한 컨테이너 이미지를 실행할 수 있습니다.
- 환경 의존성 해결: 컨테이너는 애플리케이션과 함께 필요한 모든 라이브러리와 설정 파일을 포함하고 있어 환경 설정 문제를 해결하고 배포를 간소화합니다.
3. 일관성
- 동일한 환경: 개발 환경, 테스트 환경, 운영 환경에서 동일한 컨테이너 이미지를 사용하여 환경 차이로 인한 문제를 방지합니다.
- 재현성: 컨테이너 이미지는 변경 불가능한(immutable) 특성을 가지므로 언제든지 동일한 환경을 재구성할 수 있습니다.
4. 생산성 향상
- 빠른 배포: 컨테이너는 빠르게 생성되고 배포될 수 있어 개발 속도를 향상시킵니다.
- 자동화: 도커는 CI/CD 파이프라인과 쉽게 통합되어 자동화된 배포를 지원합니다.
- 협업: 개발자, 운영팀 간의 협업을 원활하게 하고, 오류를 줄일 수 있습니다.
5. 마이크로서비스 아키텍처와의 시너지
- 독립적인 배포: 각 마이크로서비스를 별도의 컨테이너로 패키징하여 독립적으로 배포하고 관리할 수 있습니다.
- 유연한 확장: 서비스별로 자원을 할당하고 확장할 수 있어 시스템의 유연성을 높입니다.
6. 안전성
- 격리: 각 컨테이너는 다른 컨테이너와 격리되어 있어 보안을 강화합니다.
- 롤백: 문제가 발생하면 이전 버전의 컨테이너로 쉽게 롤백할 수 있습니다.
정리하면, 도커 컨테이너는 애플리케이션 개발, 배포, 운영 전반에 걸쳐 높은 효율성, 이식성, 일관성, 생산성을 제공합니다. 특히 마이크로서비스 아키텍처와의 시너지를 통해 복잡한 시스템을 효과적으로 관리할 수 있도록 지원합니다.
728x90
'STUDY > SERVER OS' 카테고리의 다른 글
[Linux] vi 편집기 전체 복사, 삭제, 붙여넣기 (1) | 2024.09.30 |
---|---|
[Docker] 도커 컨테이너 주요 명령어 (0) | 2024.07.30 |
[Linux] log파일 볼 때 자주 사용하는 명령어 cat·head·tail·grep (0) | 2024.02.21 |
[Linux] 리눅스에서 OS 버전 확인 (0) | 2024.01.15 |
[Docker] 도커(Docker)란? (0) | 2023.11.24 |