• 검색 결과가 없습니다.

도커(D OCKER )의 개념과 구성요소

5. 마이크로 서비스 배포

5.2 도커(D OCKER )의 개념과 구성요소

도커는 마이크로서비스 또는 애플리케이션을 컨테이너라는 표준화된 유닛으로

패키징하여 신속하게 구축, 테스트 및 배포할 수 있는 오픈 소스 플랫폼이다. 도커는 도커 클라이언트, 도커 이미지, 도커 데몬, 도커 레지스트리, 도커 네트워크와 오케스트레이션 및 모니터링이 가능한 에코 시스템으로 구성된다.

5.2.1 도커 엔진

도커 엔진은 클라이언트-서버 애플리케이션으로 도커 데몬(서버), REST API 그리고 CLI(Command Line Interface)로 구성된다. CLI 는 스크립트 또는 CLI 명령어로 도커 REST API 를 통해 도커 데몬(서버)를 제어하고 상호작용을 한다. 요청을 받은 도커 데몬(서버)는 도커 객체 즉, 이미지, 컨테이너, 네트워크 그리고 볼륨 등을 생성하고, 관리한다.

16

https://docs.docker.com/get-started/overview/

5.2.2 도커 아키텍처

도커는 클라이언트-서버 아키텍처를 사용한다. 도커 클라이언트는 도커 데몬과 통신하며, 도커 데몬은 도커 컨테이너를 빌드하고, 실행, 배포한다. 도커 클라이언트는 도커 데몬과 동일한 시스템에 둘 수도 있고, 원격으로 연결할 수도 있다. 도커

클라이언트와 도커 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API 를 사용하여 통신한다.

5.2.2.1 도커 데몬(서버)

도커 데몬(dockerd)은 백그라운드로 실행된 상태로 도커 API 요청 수신을 기다리며, 도커 객체 즉, 이미지, 컨테이너, 네트워크 그리고 볼륨 등을 관리한다. 도커 데몬은 또한 도커 서비스를 관리하기 위해 다른 도커 데몬과 통신할 수 있다.

5.2.2.2 도커 클라이언트

도커 클라이언트는 명령행 인터페이스로 CLI 라고 하며 도커 데몬(서버)로 명령을 전한다. 예를 들어, 'docker run'이라는 명령을 로컬의 경우는 UNIX 소켓을 사용하고, 원격에서는 TCP 소켓을 사용하여 도커 API 를 통해 도커 데몬(서버)로 전달한다. 이 명령을 수신한 도커 데몬은 실행한다.

5.2.2.3 도커 저장소

도커 저장소는 도커 이미지들을 저장한다. 도커 허브(Docker Hub)는 누구나 사용할 수 있는 공용 저장소17이며, 도커는 기본적으로 도커 허브에서 이미지를 찾도록 설정되어 있다. 물론, Private 저장소를 참고하도록 설정 변경이 가능하다. 'docker pull' 또는 'docker run' 명령을 사용하면 필요한 이미지를 가져올 수 있다. 'docker push'를 사용하면 설정된 저장소로 이미지가 업로드된다.

5.2.2.4 도커 객체

도커 객체로는 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 그리고 기타 객체가 있다.

여기서는 기본적인 이미지, 컨테이너, 서비스를 다루도록 한다.

5.2.2.4.1 이미지

이미지란 도커 컨테이너를 생성하기 위해 사용되는 읽기전용 템플릿이다. 이미지는 다른 이미지를 기반으로 하여 추가적인 커스터마이징을 할 수 있다. 예를 들어, 우분투 이미지를 기반으로 아파치 웹서버와 애플리케이션 그리고, 필요한 세부정보 및 의존성을 추가 설정할 수 있다.

자신만의 이미지를 만들 수 있고, 다른 사람이 만들어 저장소에 올린 이미지를 사용할 수도 있다. 이미지를 만들기 위해서는 Dockerfile 에 이미지 생성 및 실행에 필요한 단계들을 정의해야 한다.

Dockerfile 의 각 명령은 이미지에 레이어를 생성한다. Dockerfile 을 변경한 후

이미지를 다시 빌드하면 변경된 레이어만 재구성된다. 이러한 도커의 특성은 다른 가상화 기술과 비교할 때 이미지를 매우 가볍고 작고 빠르게 이미지를 만드는 장점이 된다.

5.2.2.4.2 컨테이너

컨테이너는 이미지의 실행가능한 인스턴스다. 도커 API 또는 CLI 를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있다. 컨테이너를 하나 이상의 네트워크에 연결하거나 새로운 저장소에 연결할 수 있으며, 컨테이너의 현재 상태를 기반으로 새 이미지를 만들 수도 있다.

기본적으로 컨테이너는 다른 컨테이너 및 해당 호스트 시스템과 잘 격리되어 있다.

컨테이너의 네트워크, 저장소 또는 기타 기본 하위 시스템이 다른 컨테이너 또는 호스트 시스템에서 격리된 상태를 제어할 수 있다.

컨테이너는 이미지를 생성하거나 시작할 때 제공하는 구성 옵션뿐만 아니라 이미지 자체로도 구성된다. 컨테이너를 삭제하면, 영구 저장소에 저장되지 않은 모든 변경 사항이 사라진다.

17

https://hub.docker.com/

5.2.2.4.3 서비스

서비스는 여러 도커 데몬에 걸쳐 컨테이너를 확장할 수 있게 해주며, 이 모든 것이 여러 managers 와 workers 와 함께 동작한다. 모든 데몬은 도커 API 를 사용하여 통신한다.

기본적으로 서비스는 모든 worker 노드에서 로드 밸런싱된다. 도커 서비스는 사용자에게는 단일 애플리케이션으로 보인다.

5.2.3 도커 설치

도커 엔진은 도커 Desktop 을 통해 다양한 Linux 플랫폼 , macOS 및 Windows 10 운영 체제에 설치할 수 있다.

각 운영 체제에 대한 설치 가이드는 아래의 공식 설치 가이드를 참조한다.

도커 Desktop 다운로드 및 설치 가이드 : https://docs.docker.com/engine/install/