Infra & Devops/Docker
[Docker] 도커의 기능(Build, Ship, Run)과 컴포넌트
겸둥이xz
2021. 9. 14. 17:54
반응형
Docker의 기능
- Build - 도커 이미지를 만드는 기능
- Ship - 도커 이미지를 공유하는 기능
- Run - 도커 컨테이너를 작동시키는 기능
Build
- 애플리케이션의 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아 도커 이미지를 만든다
- 도커 이미지는 실행 환경에서 움직이는 컨테이너의 바탕이 됨
- 하나의 이미지에는 하나의 애플리케이션만 넣어 두고, 여러 개의 컨테이너를 조합하여 서비스를 구축하는 방법을 권장
- 이미지는 Docker 명령을 사용하여 수동으로 만들 수도 있고, Dockerfile이라는 설정 파일을 만들어 그것을 바탕으로 자동으로 이미지를 만들 수도 있다
- CI/CD 관점에서 코드에 의한 인프라의 구성 관리를 생각하면 Dockerfile을 사용하여 관리하는 것이 바람직함
Ship
- 도커 레지스트리에서 도커 이미지를 공유할 수 있다
- 공식 레지스트리 Docker Hub에서 Ubuntu, CentOS와 같은 Linux 배포판의 기본 기능을 제공하는 베이스 이미지를 배포하고 있다
- 베이스 이미지에 미들웨어, 라이브러리, 애플리케이션 등을 넣은 이미지를 겹쳐서 독자적인 이미지를 만듦
- 공식 이미지 외에도 개인이 작성한 이미지를 Docker Hub에서 자유롭게 공개 및 공유 가능
- Docker Hub : https://hub.docker.com
- Docker Hub는 Github와 연계 가능
- Github에서 Dockerfile을 관리하고, Docker 이미지를 자동 생성하여 Docker Hub에 공개하는 것이 가능 (Automated Build)
Run
- 도커는 Linux 상에서 컨테이너 단위로 서버 기능을 작동시키고, 이 컨테이너의 바탕이 도커 이미지이다
- 이미지만 있으면 도커가 설치된 환경에서 컨테이너를 작동시킬 수 있다
- 하나의 이미지로 여러 개의 컨테이너를 만들 수 있다
- 여러 개의 컨테이너가 하나의 Linux 커널을 공유하고 있다
- 컨테이너 안에서 작동하는 프로세스를 하나의 그룹으로 관리하고, 그룹마다 각각 파일 시스템이나 호스트명, 네트워크 등을 할당
- 그룹이 다르면 프로세스나 파일에 액세스 할 수 없음
- 컨테이너를 독립적으로 관리하기 위해 Linux 커널 기능(namespace, cgroups 등) 기술이 사용된다
제품 환경에서는 모든 Docker 컨테이너를 한 대의 호스트 머신에서 작동시키는 일은 드물다. 시스템의 트래픽 증감이나 가용성, 신뢰도 등을 고려한 후에 여러 대의 호스트 머신으로 된 분산 환경을 구축한다.
그리고 보통 컨테이너 관리에 대해서는 오케스트레이션 툴을 이용하는 것이 일반적이다. 컨테이너 오케스트레이션 툴은 분산 환경에서 컨테이너를 가동시키기 위해 필요한 기능을 제공하고 있다.
Docker 컴포넌트
도커는 몇개의 컴포넌트로 구성되어 있다. 핵심 기능인 Docker Engine을 중심으로 컴포넌트를 조합하여 애플리케이션 구동 환경을 구축한다. 도커는 명령줄에서 조작하는 것(CLI)이 중심이다.
- Docker Engine (도커의 핵심 기능)
- 이미지를 생성하고 컨테이너를 가동하기 위한 도커의 핵심 기능
- 도커 명령의 실행, Dockerfile에 의한 이미지 생성
- Docker Registry (이미지 공개 및 공유)
- 이미지를 공개 및 공유하기 위한 레지스트리 기능
- 공식 레지스트리 Docker Hub도 Docker Registry를 사용한다
- Docker Compose (컨테이너 일원 관리)
- 여러 개의 컨테이너 구성 정보를 코드로 정의하고, 명령을 실행함으로써 애플리케이션의 실행환경을 구성하는 컨테이너들을 일원 관리하기 위한 툴
- Docker Machine (도커 실행 환경 구축)
- VirtualBox, AWS EC2와 같은 환경에 Docker의 실행 환경을 명령으로 자동 생성하기 위한 툴
- Docker Swarm (클러스터 관리)
- Docker Swarm은 여러 Docker 호스트를 클러스터화하기 위한 툴
<참고자료>
'완벽한 IT 인프라 구축을 위한 Docker 2판'
https://kimjingo.tistory.com/14?category=944803
반응형