도커
컨테이너 기반의 오픈 소스 가상화 플랫폼이다. 여기서 "컨테이너"란 애플리케이션과 그에 필요한 라이브러리, 의존성 등을 하나의 패키지로 묶는 기술이다.
작동 원리와 방식
- 이미지와 컨테이너
-이미지(Image): 응용 프로그램과 그 의존성을 패키징 한 것.
-컨테이너(Container): 이미지를 실행한 인스턴스. - Docker Daemon
도커 데몬은 컨테이너의 생명 주기를 관리. 데몬은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨 등을 관리할 수 있다. - Docker Client
사용자가 명령어를 입력하는 인터페이스. (docker run, docker pull 등). - Docker Registry
이미지를 저장하는 장소. Docker Hub가 가장 유명한 레지스트리이다. - 컨테이너 생명 주기
- Dockerfile 작성
- docker build 명령으로 이미지 생성
- docker run 명령으로 컨테이너 실행
- 컨테이너가 실행되면 도커 데몬이 컨트롤
장점
- 이식성: 의존성과 함께 패키징되므로 어떤 환경에서도 똑같이 실행.
- 빠른 시작과 종료: VM보다 훨씬 빠르게 시작과 종료가 가능.
- 효율적인 자원 사용: 호스트 OS와 자원을 공유하기 때문에 메모리와 CPU 사용이 효율적임.
- 버전 관리와 배포 용이: 이미지를 버전으로 관리할 수 있고, 레지스트리를 통해 쉽게 배포할 수 있음.
- 모듈화와 분리: 마이크로서비스 아키텍처를 쉽게 구현.
단점
- 성능 오버헤드: 가상 머신에 비해 적지만, 컨테이너화는 일부 성능 오버헤드를 가짐.
- 복잡성: 오케스트레이션, 네트워킹, 볼륨 관리 등은 초기 설정과 학습이 필요.
- 보안 이슈: 컨테이너가 호스트 시스템과 자원을 공유하기 때문에 잘못 구성하면 보안 문제가 발생할 수 있음.
- 다양한 플랫폼 지원 문제: 모든 애플리케이션과 시스템이 컨테이너화에 적합하지 않을 수 있음.
아직 내가 큰 서버 혹은 장시간 서버를 운영한 적이 없기에 크게 필요성을 느끼지 못하지만 도커에 대한 언급이 자주 들려오고 많이 사용되기에 이 정도라도 정리하고 알고 있는 게 나중에 사용하는데 도움이 될 것이라 믿는다. 나중에 직접 사용한다면 사용했던 방법과 그때 직접 사용하면서 느낀점과 알게 된 것들을 다시 정리할 것이다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.09.11 정렬 알고리즘 (0) | 2023.09.14 |
---|---|
23.09.10 엘라스틱서치(Elasticsearch) (0) | 2023.09.14 |
23.09.07 깃허브 액션스(GitHub Actions) (0) | 2023.09.12 |
23.09.05 캐시(cache) (0) | 2023.09.11 |
23.09.04 운영체제(Operating System, OS) (0) | 2023.09.10 |