[Azure] AZ-104 Azure 관리자 필수 조건 - Docker Container
1. Docker
Container?
Container는 소프트웨어 패키지를 빌드하고 실행할 수 있는 격리된 환경이다. 소프트웨어 패키지를 빌드하고 실행할 수 있는 격리된 환경이다. 소프트웨어 패키지지에는 모든 컴퓨팅 환경에서 빠르고 안정적으로 애플리케이션을 싱행하기 위한 코드 및 종속성이 포함된다.
→ VM보다 가볍게 서비스를 실행할 수 있는 가상화 머신이다.
소프트웨어 컨테이너화
소프트웨어 컨테이너화는 VM을 사용하지 않고 컨테이너를 배포 및 실행하는데 사용되는 OS 가상화 방법이다.
Docker?
Docker는 컨테이너를 개발, 제공 및 실행하는 컨테이너화 플랫폼이다. Docker는 애플리케이션을 개발하고 테스트 하는 경우, 데스크톱 또는 노트북에서 실행할 수 있다. Docker는 Linux, Windows, macOS를 지원한다.
Docker 엔진
Docker 엔진은 클라이언트와 서버가 동일 호스트에서 실행되는 클라이언트-서버 구현으로 구성된 여러 구성 요소로 구성된다. 클라이언트는 REST API를 사용하여 서버와 통신하며, REST API를 통해 클라이언트가 원격 서버 인스턴스와 통신할 수 있다.
Docker 클라이언트
Docker Client는 Docker 서버와 상호 작용하기 위한 CLI를 제공하는 docker 명령줄 애플리케이션이다. docker 명령은 Docker REST API를 사용하여 로컬 또는 원격 서버에 명령을 보내고, 컨테이너를 관리하는 데 사용하는 기본 인터페이스로 작동한다.
Docker 서버
Docker 서버는 dockerd라는 데몬이다. docker 데몬은 REST API를 통해 클라이언트의 요청에 응답하며 다른 데몬과 상호작용할 수 있다.
Docker 개체
컨테이너 배포를 지원하려면 여러 개체를 만들고 구성해야 한다. 네트워크, 스토리지 볼륨, 플러그 인 및 기타 서비스 개체가 포함된다.
Docker Hub
Docker Hub는 SaaS Docker 컨테이너 레지스트리이다. Docker 레지스트리는 생성되는 컨테이너 이미지를 저장하고 배포하는데 사용하는 리포지토리이다. Docker Hub는 Docker가 이미지 관리에 사용하는 기본 퍼블릭 레지스트리이다.
2. Docker 이미지 작동 방법
컨테이너로 패키지된 소프트웨어
컨테이너로 패키지된 소프트웨어는 개발자가 빌드하는 애플리케이션으로 제한되지 않는다. 애플리케이션 코드, 시스템 패키지, 라이브러리, 구성 파일 및 컨테이너에서 실행되는 운영 체제를 나타낸다.
호스트 OS
Host OS는 Docker 엔진이 실행되는 OS이다. Linux에서 실행되는 Docker 컨테이너는 호스트 OS 커널을 공유하며 Binary 파일이 OS 커널에 직접 액세스 할 수 있는 한 컨테이너 OS가 필요하진 않다.
컨테이너 OS
컨테이너 OS는 패키지된 이미지에 포함된 OS를 말한다. 컨테이너에는 여러 버전의 OS가 포함될 수 있다.
3. Docker Container 작동 방식
Docker 컨테이너 관리
컨테이너를 실행 상태로 전환하려면 run명령을 사용한다. 실행 중인 컨테이너를 다시 시작할 수도 있다. 컨테이너는 일시 중지되거나, 중지되거나, 종료될 때까지 실행 상태로 간주된다. 컨테이너는 단독으로 실행 상태에서 종료될 수 있다. 실행 중인 프로세스가 완료되거나 프로세스가 오류 상태로 전환될 꼉우 컨테이너가 자동으로 종료된다.
Docker 컨테이너 스토리지 구성
컨테이너 스토리지는 임시
로그 파일은 컨테이너 인스턴스 간 지속되지 않는다. 컨테이너를 제거하면 모든 데이터가 컨테이너와 함께 제거된다.
컨테이너 스토리지가 기본 호스트 머신에 연결
컨테이너가 기본 호스트 머신에 연결되므로, 컨테이너 로그 파일에 액세스하거나 로그 파일을 이동하기 어렵다. 파일에 액세스 하기 위해선 컨테이너 인스턴스에 연결해야 한다.
컨테이너 스토리지 드라이브 성능 저하
컨테이너는 앱이 데이터를 쓸 수 있도록 스토리지 드라이버를 구현한다. 호스트 OS 커널과 통신하기 위해 추가 추상화를 도입하며 호스트 파일 시스템에 쓰는 것보다 성능이 저하된다.