Docker
- Achievement Goals
- Docker overview
- The Docker platform
- 도커로 무엇을 할 수 있을까요?
- 도커 아키텍쳐
- 도커 daemon
- 도커 clinet
- 도커 registries
Achievement Goals
- 컨테이너 기술이 무엇인지, 도커가 왜 필요한지 알 수 있다.
- 컨테이너와 이미지, 레지스트리가 무엇인지 이해할 수 있다.
- 대표적인 레지스트리인 Docker Hub에서 이미지를 검색하고, 사용할 수 있다.
- 한 개의 이미지를 이용해서 컨테이너를 구축할 수 있다.
- 두 개 이상의 이미지를 이용해서 컨테이너를 구축하고 서로가 어떻게 연결되는지 알 수 있다.
- Docker CLI에서 명령어를 사용해서 이미지를 생성/수정/배포하고, 컨테이너를 생성/삭제할 수 있다.
Docker overview
- Docker는 애플리케이션 개발, 배송 및 실행을 위한 오픈소스 플랫폼입니다
- 도커는 어플리케이션을 infrastructure에서 분리시켜 빠르게 소프트웨어를 배송할 수 있게 해줍니다.
- 도커의 배송, 테스팅, 빠른 배포의 이점을 살려서 코드 작성과 생산에서의 코드 실행의 딜레이를 현저하게 줄일 수 있습니다.
The Docker platform
Docker는 컨테이너라고 하는 느슨하게 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공합니다. 격리 및 보안을 통해 주어진 호스트에서 많은 컨테이너를 동시에 실행할 수 있습니다. 컨테이너는 가볍고 애플리케이션을 실행하는 데 필요한 모든 것을 포함하므로 현재 호스트에 설치된 것에 의존할 필요가 없습니다. 작업하는 동안 컨테이너를 쉽게 공유할 수 있으며 공유하는 모든 사람이 동일한 방식으로 작동하는 동일한 컨테이너를 갖게 됩니다.
Docker는 컨테이너의 수명 주기를 관리하기 위한 도구와 플랫폼을 제공합니다.
- 컨테이너를 사용하여 애플리케이션 및 지원 구성 요소를 개발합니다.
- 컨테이너는 애플리케이션을 배포하고 테스트하기 위한 단위가 됩니다.
- 준비가 되면 애플리케이션을 컨테이너 또는 조율된 서비스로 프로덕션 환경에 배포합니다. 이는 프로덕션 환경이 로컬 데이터 센터, 클라우드 공급자 또는 이 둘의 혼합인지 여부에 관계없이 동일하게 작동합니다.
도커로 무엇을 할 수 있을까요?
빠르고 일관된 애플리케이션 제공
Docker는 개발자가 애플리케이션 및 서비스를 제공하는 로컬 컨테이너를 사용하여 표준화된 환경에서 작업할 수 있도록 하여 개발 수명 주기를 간소화합니다. 컨테이너는 지속적 통합 및 지속적 제공(CI/CD) 작업흐름에 적합합니다.
작업 예시
- 개발자는 로컬에서 코드를 작성하고 Docker 컨테이너를 사용하여 동료와 작업을 공유합니다.
- Docker를 사용하여 애플리케이션을 테스트 환경으로 푸시하고 자동화 및 수동 테스트를 실행합니다.
- 개발자는 버그를 발견하면 개발 환경에서 수정하고 테스트 및 검증을 위해 테스트 환경에 재배포할 수 있습니다
- 테스트가 완료되면 업데이트된 이미지를 프로덕션 환경에 푸시하는 것처럼 간단하게 고객에게 수정 사항을 제공할 수 있습니다.
반응형 배포 및 확장
Docker의 컨테이너 기반 플랫폼은 이식성이 높은 작업 부하를 허용합니다. Docker 컨테이너는 개발자의 로컬 랩톱, 데이터 센터의 물리적 또는 가상 머신, 클라우드 공급자 또는 혼합 환경에서 실행할 수 있습니다. Docker의 휴대성과 가벼운 특성 덕분에 워크로드를 쉽게 동적으로 관리할 수 있으며, 비즈니스 요구 사항에 따라 거의 실시간으로 애플리케이션과 서비스를 확장하거나 축소할 수 있습니다.
동일한 하드웨어에서 보다 많은 작업량 실행가능
Docker는 가볍고 빠릅니다. 하이퍼바이저 기반 가상 머신에 대한 실행 가능하고 비용 효율적인 대안을 제공하므로 더 많은 컴퓨팅 용량을 사용하여 비즈니스 목표를 달성할 수 있습니다. Docker는 고밀도 환경과 더 적은 리소스로 더 많은 작업을 수행해야 하는 소중 규모 배포에 적합합니다.
도커 아키텍쳐
Docker는 클라이언트-서버 아키텍처를 사용합니다.
Docker 클라이언트는 Docker 컨테이너를 빌드, 실행 및 배포하는 무거운 작업을 수행하는 Docker daemon과 통신합니다.
Docker 클라이언트와 daemon은 동일한 시스템에서 실행되거나 Docker 클라이언트를 원격 Docker 데몬에 연결할 수 있습니다.
Docker 클라이언트와 daemon은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신합니다.
또 다른 Docker 클라이언트는 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있는 Docker Compose입니다.
도커 daemon
도커 api 요청을 listen 해서 도커 객체(이미지 ,콘테이너,네트워크, 볼륨)을 매니징한다.
또한 도커 서비스 관리를 위해 다른 daemon과도 커뮤니케이트 한다.
도커 clinet
Docker 클라이언트(docker)는 많은 Docker 사용자가 Docker와 상호 작용하는 기본 방법입니다. docker run과 같은 명령을 사용할 때 클라이언트는 이러한 명령을 damon에 보내고 damon이 명령을 수행합니다. docker 명령은 Docker API를 사용합니다. Docker 클라이언트는 둘 이상의 daemon통신할 수 있습니다.
도커 registries
도커 이미지들을 보관합니다. Docker Hub은 누구나 사용 가능한 퍼블릭 레지스트리입니다.
도커는 기본적으로 도커 헙에서 이미지를 찾도록 구성되어 있습니다.
프라이빗 레지스트리 또한 운용 가능합니다.
docker pull 이나 docker run 커맨드 사용 시 요청된 이미지는 구성된 레지스트리에서 가져옵니다
docker push 사용 시 이미지는 레지스트리로 들어갑니다.