Docker
[Docker] 기본 개념
HU_717
2024. 1. 2. 16:26
도커의 개념과 의의, 이미지, 컨테이너 등 도커를 처음 공부할 때 기본적인 내용을 정리하였습니다.
"도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문" 책을 참고하여 작성한 글입니다.
✏️ 도커
- 컨테이너형 가상화 기술을 구현하기 위한 상주 애플리케이션과 이 애플리케이션을 조작하기 위한 명령행 도구로 구성되는 프로덕트
- 운영체제 대부분을 호스트 운영체제와 공유함
* 컨테이너형 가상화 기술 : 가상화 소프트웨어 없이도 운영체제의 리소스를 격리해 가상 운영체제(컨테이너) 생성 가능
- 편리한 환경 구축이 가능함
- 구성파일과 명령어로 테스트용 가상환경 구축 가능
- 조작이 간편한 경량 컨테이너
- 로컬머신의 개발환경 구축에 널리 사용됨
- 이식성이 뛰어나 개발 환경과 운영 환경에 동등하게 재현이 가능함
- 서버끼리 컨테이너 이동 가능
- 컨테이너 정보를 Dockerfile 코드(코드 기반으로 복제 및 배포)로 관리
✓ 도커 사용의 의의
- 변하지 않는 실행환경으로 멱등성(연산을 여러번 적용하더라도 결과가 달라지지 않음) 확보
- 코드를 통한 실행환경 구축 및 애플리케이션 구성
- 실행환경과 애플리케이션의 일체화로 이식성 향상
- 시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성
- 웹 어플리케이션 프론트에 아파치나 엔진엑스 같은 웹 서버 없이 컨테이너 설정 가능
✏️ 도커 이미지
- 도커 이미지 빌드(Dockerfile 이나 애플리케이션 실행 파일을 사용해서 도커 컨테이너의 원형이 될 이미지를 만드는 과정)
- 도커 컨테이너를 구성하는 파일 시스템과 실행할 애플리케이션 설정을 하나로 합친 것
- 컨테이너를 생성하는 템플릿 역할
✏️ 도커 컨테이너
- 도커 이미지를 기반으로 생성되며, 파일 시스템과 애플리케이션이 구체화 돼 실행되는 상태
- 운영체제(인프라)와 애플리케이션을 담은 상자
- 작업 환경 차이를 줄여줌
- 도커 이미지 형태 저장 후 재사용 가능함(도커 이미지 하나로 여러 개 컨테이너 생성 가능)
✏️ 도커 컴포즈
- 컨테이너 의존 관계나 실행 순서를 위해 보완된 것
- yaml 포맷으로 작성된 설정 파일로 컨테이너 정의나 컨테이너 의존 관계를 정의해 시작 순서 제어 가능
- 도커와 도커 컴포즈를 통해 여러 애플리케이션과 미들웨어 의존 관계를 간결한 코드로 관리 가능
✏️ 도커 스웜
- 도커 컴포즈가 단일 서버를 넘어 여러 서버에 걸쳐있는 여러 컨테이너를 관리할 수 있도록 한 도구
- 컨테이너 증가 및 감소, 노드 리소스의 효율적 활용을 위한 컨테이너 배치 및 로드 밸런싱 기능 갖춤
- 배포시 롤링업데이트(오래된 컨테이너와 새로운 컨테이너 단계적 서비스 교체 투입) 가능
✏️ 도커 Hub
- Image Registry : Docker 이미지를 저장하는 원격 스토리지
- 도커에서 운영되는 Docker 이미지 저장소 서비스
- 공개된 이미지만 사용할 경우 도커Hub 가입 필요 없음
💡정리
- Docker의 구성 : Client(docker), 서버(dockered)
- Docker image : read only의 docker container을 생성하기 위한 template
- Container : images가 실제 메모리에 로딩된 instance
- Registry : Docker hub, images의 저장소