Docker #1 - Docker overview
Overview
Docker는 애플리케이션 개발, 제공 및 실행하기 위한 오픈플랫폼이다. Docker를 사용하면 애플리케이션을 인프라에서 분리할 수 있으므로 소프트웨어를 빠르게 제공할 수 있다. Docker를 사용하면 애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리 할 수 있다. 코드를 신속하게 전달, 테스트 및 배포하기 위한 Docker의 방법론을 잘 활용하면 코드 작성과 프로덕션 실행 사이의 지연을 크게 줄일 수 있다.
1. Docker platform
Docker는 컨테이너라고하는 격리 된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공한다. 격리 및 보안을 통해 주어진 호스트에서 여러 컨테이너를 동시에 실행할 수 있다. 컨테이너는 가볍고 애플리케이션을 실행하는 데 필요한 모든 것이 포함되어 있으므로 현재 호스트에 설치된 항목에 의존 할 필요가 없다. 작업하는동안 컨테이너를 쉽게 공유 할 수 있으며, 공유하는 모든 사람이 동일한 방식으로 동작하는 동일한 컨테이너를 갖게된다. Docker는 컨테이너의 수명주기를 관리하기 위한 도구와 플랫폼을 제공한다.
2. What can I use Docker for?
2.1 빠르고 일관된 애플리케이션 배포 제공
Docker는 개발자가 애플리케이션과 서비스를 제공하는 로컬 컨테이너를 사용하여 표준화 된 환경에서 작업 할 수 있도록함으로써 개발 수명주기를 간소화한다. 컨테이너는 지속적 통합 및 지속적 배포(CI / CD) 워크 플로우에 적합하다.
2.2 반응 형 배포 및 확장
Docker의 컨테이너 기반 플랫폼은 이동성이 뛰어난 워크로드를 허용한다. Docker 컨테이너는 개발자의 로컬 노트북, 데이터 센터의 물리적 또는 가상 머신, 클라우드 제공 업체 또는 혼합 환경에서 실행될 수 있다. Docker의 휴대 성 및 경량 특성 덕분에 거의 실시간으로 비즈니스 요구에 따라 애플리케이션과 서비스를 확장하거나 축소하여 워크로드를 쉽게 동적으로 관리 할 수 있다.
1.2.3 동일한 하드웨어에서 더 많은 워크로드 실행
Docker는 가볍고 빠르다. 하이퍼 바이저 기반 가상 머신에 대한 실행 가능하고 비용 효율적인 대안을 제공하므로 더 많은 컴퓨팅 용량을 사용하여 비즈니스 목표를 달성 할 수 있다. Docker는 더 적은 리소스로 더 많은 작업을 수행해야하는 고밀도 환경과 중소 규모 배포에 적합하다.
3. Docker architecture
Docker는 클라이언트-서버 아키텍처를 사용한다. Docker 클라이언트는 Docker 컨테이너를 빌드, 실행 및 배포하는 무거운 작업을 수행하는 Docker 데몬과 통신한다. Docker 클라이언트와 데몬은 동일한 시스템에서 실행되거나 Docker 클라이언트를 원격 Docker 데몬에 연결할 수 있다. Docker 클라이언트와 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다. 또 다른 Docker 클라이언트는 Docker Compose로, 컨테이너 세트로 구성된 애플리케이션으로 작업 할 수 있다.
4. Docker deamon
Docker 데몬 (dockerd)은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리한다. 데몬은 다른 데몬과 통신하여 Docker 서비스를 관리 할 수도 있다.
5. Docker client
Docker 클라이언트 (docker)는 많은 Docker 사용자가 Docker와 상호 작용하는 기본 방법이다. docker run과 같은 명령을 사용할 때 클라이언트는 이러한 명령을 dockerd로 전송하여 실행한다. docker 명령은 Docker API를 사용한다. Docker 클라이언트는 둘 이상의 데몬과 통신 할 수 있다.
6. Docker registries
Docker 레지스트리는 Docker 이미지를 저장한다. Docker Hub는 누구나 사용할 수있는 공용 레지스트리이며 Docker는 기본적으로 Docker Hub에서 이미지를 찾도록 구성되어있다. 자신의 개인 레지스트리를 실행할 수도 있다. docker pull 또는 docker run 명령을 사용하면 필요한 이미지가 구성된 레지스트리에서 가져온다. docker push 명령을 사용하면 이미지가 구성된 레지스트리로 푸시된다.
*7. Docker object
Docker를 사용하면 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 및 기타 객체를 만들고 사용하게된다. 이 섹션은 이러한 개체 중 일부에 대한 간략한 개요입니다.
8. IMAGES
이미지는 Docker 컨테이너를 만들기위한 지침이있는 읽기 전용 템플이다. 종종 이미지는 몇 가지 추가 사용자 정의와 함께 다른 이미지를 기반으로한다. 예를 들어, 우분투 이미지를 기반으로하는 이미지를 만들 수 있습니다. 또한, 구성에 따라 Apache 웹 서버와 애플리케이션은 물론 애플리케이션을 실행하는 데 필요한 구성 세부 사항도 설치한다.
이처럼 도커는 자신의 이미지를 만들거나 다른 사람이 만들고 레지스트리에 게시 한 이미지를 사용할 수 있게 해준다. 자체 이미지를 빌드하려면 이미지를 생성하고 실행하는 데 필요한 단계를 정의하는 간단한 구문으로 *Dockerfile사용한다. Dockerfile의 각 명령어는 이미지에 레이어를 만든다. Dockerfile을 변경하고 이미지를 다시 빌드하면 변경된 레이어 만 다시 빌드된다. 이것은 다른 가상화 기술과 비교할 때 이미지를 매우 가볍고 작고 빠르도록 만드는 요소의 일부이다.
9. CONTAINERS
이미지의 런타임 인스턴스. 컨테이너는 이미지의 실행 가능한 인스턴스이다. Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있다. 컨테이너를 하나 이상의 네트워크에 연결하거나 스토리지를 연결하거나 현재 상태를 기반으로 새 이미지를 만들 수도 있다. 기본적으로 컨테이너는 다른 컨테이너 및 호스트 시스템과 비교적 잘 격리되어 있다. 컨테이너의 네트워크, 저장소 또는 기타 기본 하위 시스템이 다른 컨테이너 또는 호스트 시스템에서 분리되는 방식을 제어 할 수 있다. 컨테이너는 이미지뿐만 아니라 생성하거나 시작할 때 제공하는 구성 옵션으로 정의된다. 컨테이너가 제거되면 영구 저장소에 저장되지 않은 상태 변경 사항이 사라진다.
10. The Underlying technology
Docker는 Go 프로그래밍 언어로 작성되었으며, Linux 커널의 여러 기능을 활용하여 기능을 제공한다. Docker는 네임 스페이스라는 기술을 사용하여 컨테이너라는 격리 된 작업 공간을 제공한다. 컨테이너를 실행하면 Docker는 해당 컨테이너에 대한 네임 스페이스 집합을 만든다. 이러한 네임 스페이스는 격리 계층을 제공한다. 컨테이너의 각 측면은 별도의 네임 스페이스에서 실행되며 액세스는 해당 네임 스페이스로 제한된다.
Refernece
- docs.docker.com/get-started/overview/
'cloud computing > docker' 카테고리의 다른 글
Docker #5 - Ubuntu에 Docker Engine 설치하기 (0) | 2021.06.08 |
---|---|
vmmem (0) | 2021.05.20 |
Docker #4 - Get started(3) tag, push (0) | 2021.04.22 |
Docker #3 - Get started(2) build, run, stop (0) | 2021.04.22 |
Docker #2 - Get started(1) (0) | 2021.04.22 |