[DOCKER] (공식문서)-Overview
Overview
- 도커는 어플리케이션을 개발하고, 옮기고 구동하는 오픈 플랫폼이다.
- 어플리케이션을 인프라에서 분리할 수 있게하며, 소프트웨어를 빠르게 제공할 수 있다.
- 도커를 통해 인프라를 소프트웨어를 관리하는 것과 같은 방식으로 관리할 수 있다.
- 이렇게 코드를 빠르게 운반, 테스팅, 배포하는 도커의 방법론은 코드를 작성하는 것과 배포 사이의 딜레이를 확실히 줄여준다.
도커 플랫폼
- 도커는 패키지 기능을 제공하며, 컨테이너라고 불리는 느슨하게 격리된 환경의 어플리케이션을 구동한다.
- 이 격리와 보안은 주어진 호스트 안에서 동시에 수많은 컨테이너를 구동할 수 있게한다.
- 컨테이너는 경량이며, 어플리케이션을 구동하는데에 필요한 모든것을 담고있다.
- 따라서 호스트에 현재 뭐가 설치되어있는지 신경쓰지 않아도 된다.
- 작업중인 컨테이너를 쉽게 공유할 수 있으며, 공유받는 모든 이가 동일한 방식으로 작동하는 동일한 컨테이너를 받는다고 보장할 수 있다.
- 도커는 컨테이너의 라이프사이클을 관리하는 플랫폼과 도구를 제공한다.
- 컨테이너를 사용해 어플리케이션과 컴포넌트를 개발한다.
- 컨테이너는 어플리케이션의 배포, 테스팅의 기본 단위가 된다.
- 준비되었다면, 배포 환경에 컨테이너 혹은
orchestrated service
에 어플리케이션을 배포한다. 이는 배포환경이 로컬이든, 클라우드, 하이브리드 인지에 상관없이 작동한다.
도커를 무엇에 사용하는가?
1. 어플리케이션의 빠른, 일관적인 운반
- 도커는 개발자들이 표준화된 환경에서 작업할 수 있도록 어플리케이션, 서비스를 제공하는 로컬 컨테이너를 사용해 개발 라이프사이클을 능률적으로한다.
- 컨테이너는 지속 통합, 지속 배포 워크플로우에 효과적이다.
아래의 시나리오를 생각해보자. 1. 개발자들이 로컬에서 코드를 작성하고, 그들의 작업을 도커컨테이너를 사용해 공유한다. 2. 테스트 환경에 그들의 어플리케이션을 넣고, 자동화, 메뉴얼화된 테스트를 하기 위해 사용한다. 3. 개발자들이 버그를 찾으면, 개발환경에서 그들을 고칠 수 있고, 테스트와 유효성 검증을 위해 다시 테스트환경에 재배포할 수 있다. 4. 테스트가 완료되면 배포환경에 업데이트된 이미지를 넣는 것 만큼 소비자에게 수정판을 배포하는 것이 쉽다.
- 반응적인 배포, 스케일링
- 도커의 컨테이너기반 플랫폼은 매우 쉽게 이동할 수 있는 작업 부하를 제공한다.
- 무슨 말이냐면, 도커 컨테이너는 개발자의 로컬 랩탑에서, 혹은 데이터센터(서버가 모여있는)에서 물리 혹은 가상 머신에서, 클라우드에서, 혹은 혼합환경에서 구동할 수 있다.
- 도커의 휴대성과 경량 환경은 역동적으로 작업부하를 관리하는 것을 쉽게하며, 어플리케이션과 서비스를 실시간으로 확장하거나 없앨 수 있다.
- 같은 하드웨어에서 더 많은 작업 수행
- 도커는 경량이면서, 빠르다. 이것은 하이퍼바이저 기반 가상머신에 대해 실용적, 비용효율적인 대안을 제공하기때문에 비즈니스 목표를 달성하기 위한 서버를 더 많이 사용할 수 있다.
- 도커는 적은 리소스로 많은 작업을 수행해야하는 고밀도 환경, 중소규모 구축에 적합하다.
도커 아키텍처
- 도커는
클라이언트-서버 아키텍처
를 사용한다. 도커 클라이언트
는도커 데몬
에게 도커 컨테이너의 구축, 실행, 배포를 위한 무거운 작업을 요청한다.도커 클라이언트
와도커 데몬
은 동일한 시스템에서 구동될 수 있고, 또는!도커 클라이언트를 원격의 도커 데몬에 연결할 수 있다.
도커 클라이언트
와도커 데몬
은 REST API, UNIX 소켓, 혹은 네트워크 인터페이스를 통해 통신할 수 있다.- 다른 도커 클라이언트는
도커 컴포즈
이다. 이는 컨테이너 집합으로 구성된 응용 프로그램으로 작업할 수 있다.
도커 데몬(dockerd)
- 도커 데몬은 도커 API 요청을 듣고, 이미지, 컨테이너, 네트워크, 볼륨과 같은 도커 객체를 관리한다.
- 도커 데몬은 다른 도커 데몬과도 통신할 수 있다.
도커 클라이언트(docker)
- 도커 클라이언트는 도커와 상호작용하기 위해 많은 도커 사용자들이 사용하는 주요한 방법이다.
docker run
과 같은 명령어를 사용하면 클라이언트는dockerd
에 전달해 dockerd가 이를 처리한다.- docker 커맨드는 docker API를 사용하며, 도커 클라이언트는 1개 이상의 데몬과 통신할 수 있다.
도커 데스크탑
- 도커 데스크탑은 맥, 리눅스, 윈도우 환경을 위한 설치가 쉬운 어플리케이션.
- 컨테이너형 응용프로그램, 마이크로 서비스를 구축-공유할 수 있다.
- 도커데스크탑은 dockerd, docker, docker compose, docker content trust, 쿠버네티스, 그리고 자격증명을 돕는다.
도커 레지스트리
- 도커 레지스트리는 도커 이미지를 저장한다.
- 도커 허브는 누구나 사용가능한 퍼블릭 레지스트리이고, 도커는 기본적으로 도커허브의 이미지를 찾도록 설정되있다.
-
개인 레지스트리도 사용할 수 있다.
docker pull
,docker run
커맨드를 사용하면 설정된 레지스트리에서 필요한 이미지를 가져온다.docker push
커맨드를 사용하면 설정된 레지스트리에 이미지를 푸시한다.
도커 객체
- 도커를 사용할때 이미지, 컨테이너, 네트워크, 볼륨, 플러그인, 그리고 다른 객체들을 생성한다.
- 이 파트에서는 이 객체들에 대한 전반적인 설명을 제공한다.
이미지
- 이미지는 도커 컨테이너를 생성하는데에 사용되는 지침이 포함된 읽기전용 템플릿이다.
- 각 이미지는 추가적인 설정과함께 특정 이미지를 기반으로 만들어진다.
예를들어, 우분투 이미지를 기반으로 이미지를 생성할 수 있지만, 응용프로그램을 실행하는 데 필요한 세부 구성뿐만 아니라, Apache 웹 서버와 응용 프로그램을 설치한다.
- 자신만의 이미지를 만들 수 있을뿐만 아니라, 공개 레지스트리에서 누군가 만들어 놓은 것을 사용할수도 있다.
- 자신만의 이미지를 만들기 위해선 이미지를 만들기위한 단계를 정의하는
Dockerfile
을 생성하고 실행하면된다. Dockerfile
의 각 작업은 이미지간 층을 형성한다.Dockerfile
을 변경하고, 이미지를 다시 빌드하면, 바뀐 레이어만 다시 빌드된다.- 이것이 바로 이미지를 경량화하는 방식이다.
컨테이너
- 컨테이너는 이미지의 실행가능한 인스턴스이다.
- Docker API, CLI를 사용해 컨테이너를 시작, 생성, 삭제, 이동 등을 할 수 있다.
- 하나의 컨테이너를 1개 이상의 네트워크로 연결할 수 있으며, 스토리지를 붙일 수 있고, 현재 state를 기반으로한 새로운 이미지를 생성할 수 있다.
- 기본적으로 컨테이너는 비교적으로 다른 컨테이너와 호스트로부터 격리되어있다.
- 컨테이너의 네트워크, 스토리지, 기반 시스템을 다른 컨테이너, 호스트와 얼마나 격리할지 설정할 수 있다.
- 컨테이너는 컨테이너 시작, 생성 시 주는 설정 옵션과 이미지로 정의된다.
- 컨테이너가 삭제되면 영구스토리지에 저장되어있지 않은 상태는 모두 삭제된다.
댓글남기기