처음부터 시작하는 Java
  • Docker 개요
    2024년 07월 04일 18시 10분 05초에 업로드 된 글입니다.
    작성자: 원2
    728x90
    반응형

    Docker 개요

    Docker는 어플 개발, 배포 및 실행하기 위한 오픈 플랫폼

    Docker를 사용하여 어플을 인프라에서 분리하여 소프트웨어를 빠르게 제공 할 수 있음

     

    Docker 플랫폼

    Docker는 컨테이너라고 하는 느슨하게 격리된 환경에서 어플을 패키징하고 실행할 수 있는 기능을 제공

    격리 및 보안을 통해 주어진 호스트에서 여러 컨테이너를 동시에 실행 가능

    컨테이너는 가볍고 어플을 실행하는데 필요한 모든 것을 포함하므로 호스트에 설치된 것에 의존 할 필요가 없음

    작업하는 동안 컨테이너를 공유할 수 있으며 공유하는 모든 사람이 동일한 방식으로 작동하는 동일한 컨테이너를 받도록 할 수 있음

     

    컨테이너는 어플을 배포하고 테스트하는 단위가 됨

     

    Docker에서 할 수 있는 것들

    빠르고 일관된 어플 제공

    개발자가 어플과 서비스를 제공하는 로컬 컨테이너를 사용, 표준화된 환경에서 작업할 수 있도록 해 개발 라이프사이클 간소화

    컨테이너는 지속적인 통합 및 배포(CI/CD) 워크플로에 적합

     

    • Docker 컨테이너를 사용하여 로컬에서 코드를 작성하고 동료와 작업을 공유
    • Docker를 사용, 어플을 테스트 환경으로 푸시하고 자동 및 수동 테스트를 실행
    • 버그 발견시, 개발 환경에서 수정후 테스트 및 검증을 위해 테스트 환경에 다시 배포 가능
    • 테스트 완료시, 업데이트된 이미지를 프로덕션 환경에 푸시하는 것 만큼 간단하게 고객에서 수정 사항 전달 가능

     

    반응형 배포 및 확장

    Docker 컨테이너 기반 플랫폼은 이동성이 뛰어난 워크로드를 허용, 여러 환경에서 실행 가능

    *워크로드: 시스템이나 네트워크가 작업을 완료하거나 특정 출력을 생성하는데 걸리는 시간과 컴퓨터 리소스의 양

     

    동일한 하드웨어에서 더 많은 작업 부하 실행

    하이퍼바이저 기반 가상 머신에 대한 실행 가능, 고밀도 환경과 더 적은 리소스로 많은 작업을 수행해야하는 소규모 및 중규모 배포에 적합

     

    도커 아키텍처

    Docker는 클라이언트 - 서버 아키텍처

    Docker 클라이언트는 Docker 데몬과 통신, 데몬은 Docker 컨테이너를 빌드, 실행 및 배포

    도커 클라이언트와 데몬은 동일한 시스템에서 실행될 수도 있고 도커 클라이언트를 원격 데몬에 연결할 수도 있음

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

    Docker Compose : 도커 클라이언트로 컨테이너 세트로 구성된 어플로 작업할 수 있음

    https://docs.docker.com/guides/docker-overview/

     

    Docker 데몬

    도커 데몬(dockerd)은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨과 같은 Docker 객체를 관리

    다른 데몬과 통신하여 Docker 서비스를 관리할 수도 있음

     

    Docker 클라이언트

    도커 클라이언트(docker)는 많은 사용자가 도커와 상호 작용하는 주요 방법

    docker run 명령을 사용하면 클라이언트(docker)가 데몬(dockerd)으로 명령을 보내 실행

    이 도커 명령은 Docker API를 사용, 도커 클라이언튼 두 개 이상의 데몬과 통신 가능

     

    도커 데스크톱

    Docker Desktop은 컨테이너화 된 어플과 마이크로서비스를 빌드하고 공유할 수 있는 Mac,Windows,Linux 환경을 실행하기 위한 어플

    이 어플은 다음을 포함함

    • Docker 데몬
    • Docker 클라이언트
    • Docker Compose
    • Docker Content Trust
    • Kubernetets
    • Credential Helper

    Docker 레지스트리

    Docker 레지스트리는 도커 이미지를 저장, Docker Hub 는 누구나 사용할 수 있는 공개 레지스트리, 기본적으로

    Docker 는 Docker Hub에선 이미지를 찾고 개인 레지스트리를 직접 실행할 수도 있음

     

    docker pull / docker run 명령을 사용하면 Docker는 구성된 레지스트리에서 필요한 이미지를 가져옴

    docker push 를 사용하면 이미지를 푸시

     

    Docker 객체

    이미지

    이미지는 Docker 컨테이너를 만드는 지침이 포함된 읽기 전용 템플릿

    종종 이미지는 다른 이미지를 기반으로 하며, 약간의 사용자 추가 사용자 정의가 있음

    예를 들어 ubuntu 기반으로 이미지를 빌드할 수 있지만 Apache 웹 서버와 어플은 물론 어플을 실행하는데 필요한 구성 세부 정보도 설치함

     

    이미지를 직접 만들거나 다른 사람이 만들어 레지스트리에 게시한 이미지만 사용할 수도 있음

    이미지를 직접 빌드하려면 이미지를 만들고 실행하는데 필요한 단계를 정의하는 Dockerfile 을 만들어야함

    Dockerfile의 각 명령어는 이미지에 레이어를 만듦

    Dockerfile을 변경하고 이미지를 다시 빌드하면 변경된 레어어만 다시 빌드 됨

    -> 다른 가상화 기술과 비교했을 때 이미지를 가볍고 작고 빠르게 만드는 요인중 하나

     

    컨테이너

    컨테이너는 이미지의 실행 가능한 인스턴스

    Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있음

    컨테이너를 하나 이상의 네트워크에 연결하거나, 스토리지를 연결, 현재 상태를 기반으로 새 이미지를 생성할 수도 있음

     

    기본적으로 컨테이너는 다른 컨테이너와 호스트 머신에서 비교적 잘 격리됨

    컨테이너의 네트워크, 스토리지 또는 기타 기본 하위 시스템이 다른 컨테이너나 호스트 머신에서 얼마나 격리되는지 제어가능

     

    컨테이너는 이미지와 컨테이너를 만들거나 시작할 때 제공하는 모든 구성 옵션으로 정의 됨

    컨테이너가 제거되면 영구 저장소에 저장되지 않은 상태의 모든 변경사항이 사라짐

     

     

    728x90
    반응형

    'Docker' 카테고리의 다른 글

    docker 컨테이너 ip 주소 확인  (0) 2024.07.10
    도커 컨테이너 실행 명령어  (0) 2024.07.10
    docker postgres 스키마 목록 조회  (0) 2024.07.10
    Docker 개념  (0) 2024.07.04
    Docker in IntelliJ  (1) 2024.07.03
    댓글