docker 시작하기 (3) :: 도커란?

ggyu_55·2023년 8월 20일
0

docker 첫걸음

목록 보기
3/3

Docker란 ??

  • 컨테이너 기반 가상화 도구 --> 어플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술

  • 리눅스 컨테이너 기술인 LXC(Linux Containers)를 바탕으로 만들어짐

  • 그럼에도 불구하고 다양한 운영체제에서 사용할 수 있으며 일단 어플리케이션이 컨테이너화 되면, 손쉽게 빌드, 배포, 관리할 수 있는 다양한 기능을 제공한다.

  • 그와 같은 도커의 기능들을 통해 애플리케이션을 빠르게 개발하고 효율적으로 배포, 관리할 수 있다.

  • 애플리케이션을 인프라에서 분리해서 SW를 신속하게 제공

  • 인프라를 애플리케이션처럼 관리할 수 있도록 해준다

그렇다면 Container 란 무엇일까?

  • 가상화 기술의 일종으로, 호스트가 되는 운영체제 위에 다수의 격리된 환경을 생성하여 각각의 컨테이너들은 애플리케이션을 서로 독립적으로 실행

  • 쉽게 말해 독방이다.

  • 독방 사이에 서로 통신은 가능함

    • Container Engine 중 가장 널리 쓰이는 것이 Docker Engine이다

  • 컨테이너의 생애주기 설명 추가 필요

가상화 기술이란?

  • 하나의 물리적인 컴퓨터 자원을 가상적으로 분할하여 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술.

  • 물리적인 자원을 더 효율적으로 사용할 수 있으며, 서버나 어플리케이션 등을 운영하는 데 있어 유연성과 안정성을 제공한다.

Hypervisor

  • VM을 생성하고 구동하는 소프트웨어

  • 운영체제에 자원을 할당 및 조율 :: GuestOS 도 자원을 잡아먹는데, 하이퍼바이져가 이를 넘겨주는 것

  • 운영체제들의 요청을 번역하여 하드웨어에 전달한다.

  • GuestOS가 점유하는 시스템 자원이 있는 Hypervisor 방식은 컨테이너 기반 가상화 기술과 비교했을 떄 오버헤드가 있다 --> 중복된 자원 관리가 발생하게 되어 비효율적

  • GuestOS + Hypervisor = Container Engine


Container 기반 vs VM 기반

  • Hypervisor 에서 Host-Guest OS 사이에 중복된 자원 관리가 발생하게 되어 비효율적이었던 문제를 해결하기 위해 Container Engine을 사용한다.

Docker Architecture

1. Docker daemon (= dockerd)

  • 도커 엔진의 핵심 구성 요소
  • 도커 호스트에서 컨테이너를 관리하고 실행하는 역할을 한다
  • 컨테이너를 생성, 시작,중지,삭제하는 등의 작업을 수행
  • 컨테이너 이미지를 관리하고, 외부에서 이미지를 다운받고 빌드하는 작업도 수행한다

2. Docker Cilent

  • 도커와 상호 작용
  • 도커 명령어를 사용하면 Docker daemon으로 보내서 실행

3. Docker Object

  • Docker Image
    - 도커 컨테이너를 만들기 위한 읽기 전용 템플릿
  • Docker Container
    - 한 도커 이미지의 실행 가능한 인스턴스
    - 애플리케이션을 실행하기 위한 모든 파일과 설정 정보를 포함하는 패키지

4. Docker Registries

  • 도커 이미지들을 관리하고 저장하는 곳
    - Docker hub : 디폴트 레지스트리, 누구나 접근 가능한 공개 저장소
    - AWS ECR : 프라이빗 레지스트리,


Docker Cheat Sheet

docker pull imagename:tag
예) docker pull httpd
httpd 이미지를 받아온다.

docker run -p 8888:80 httpd
도커 컨테이너를 실행 시키는 데 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행주세요

docker run -itd -p 8888:80 httpd
도커 컨테이너를 실행시키는 데 대화형터미널 백그라운드 옵션을 주면서 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행주세요

docker run -itd -v localfilepath:containerpath -p 8888:80 httpd
로컬환경에 파일을 컨테이너 파일에 마운트 시켜주시고 포트를 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행시켜주세요

docker images
도커 이미지 전체를 조회

docker rmi image
도커 이미지 삭제 진행

docker build .
(현재 디렉토리에 있는) Dockerfile을 이미지화 시켜주세요

docker build -t httpd:test1 .
Dockerfile을 이미지화 시켜주시는데 httpd 이미지 이름과 test1이라는 태그를 달고 진행해주세요

-itd에
-i는 대화형
-t 터미널
-d detach라고 하는 백그라운드 형식을 나타냅니다.


출처 ::
The Docker Container Lifecycle | Docker made easy #3, 생활코딩유튜부

0개의 댓글