도커/개념 및 실습

02장, 도커 개요, 설치

Jaden Park 2021. 5. 31. 13:19

2.1 도커의 개요

도커란?

  • Docker는 2013년 Docker 사에서 Go 언어로 개발된 오픈소스 플랫폼
  • Docker를 사용하면 리눅스 컨테이너를 더 쉽게 관리하고 실행할 수 있음
  • Docker의 가장 큰 특징은 이식성. 이는 개발 환경, 테스트 환경, 서비스 환경을 모두 동일하게 사용할 수 있기 때문

 

도커의 특징

서버를 코드 형태로 정의

  • 도커는 이미를 사용하여 컨테이너를 실행.
  • 이 컨테이너는 하나의 애플리케이션을 실행하는 서버처럼 동작
  • 도커는 이미지를 제작할 때 코드형태로 정의하여 작성할 수 있음
  • 서버를 코드 형태로 정의할 수 있어 일관성을 유지하는 것이 버전 관리 부분에서도 편리

 

이식성

  • 애플리케이션 개발 단계는 크게 개발 단계, 테스트 단계, 서비스 단계로 나뉨.
  • 각 단계의 환경을 통일하는 것은 쉽지 않음.
  • 하지만 도커를 사용하면 컨테이너에 모든 환경을 구축하기 때문에 도커만 설치하면 됌

 

상호운용성

  • Docker는 Google, Amazon, IBM, Microsoft, Red Hat 등 다양한 벤더에서 지원하기 때문에 다양한 벤더의 시스템 및 오픈 소스와 연계하여 사용할 수 있음

 

도커의 구조

이미지

  • 도커로 리눅스 컨테이너를 생성하려면 미리 제작된 이미지가 있어야 함
  • 이미지는 여러 개의 레이어로 이루어져 있으며, 각 레이어는 Read Only 상태로 사용
  • 만약 이미지로 컨테이너를 실행하여 파일을 생성하거나 삭제한다면 새로운 레이어를 만들어 내용을 저장
  • 이때 사용하는 방식이 COW(Copy on Write)와 유사

 

저장소

  • 컨테이너를 생성하려면 이미지가 있어야 하고, 이미지는 호스트가 아닌 외부에 저장되어 공유할 수 있어야 함
  • 이를 저장소라고 하며 범위에 따라 Public 이미지 저장소와 Private 이미지 저장소로 나눌 수 있음
  • 대표적인 이미지 저장소는 도커 허브(Docker Hub)가 있으며, 도커 허브에는 퍼블릿과 프라이빗 이미지 저장소 둘 다 사용할 수 있음.
  • 또한 Habor와 도커 레지스트리 같은 프라이빗 이미지 저장소를 만들어 별도로 운영할 수 있으며, 퍼블릿 클라우드 서비스는 자체 이미지 저장소 서비스가 있다.

 

컨테이너

  • 컨테이너는 이미지의 실행 형태
    • 이미지가 메모리에 올라가면 컨테이너
    • 컨테이너가 디스크에 저장되어 있으면 이미지
  • 하나의 컨테이너에는 하나의 애플리케이션이 실행되는 것을 권장. (추가로 실행할 수 있지만 유지하는 것은 권장하지 않음)

 

도커의 기능

이미지 생성

  • 도커는 다양한 방법으로 이미지를 생성할 수 있다
  • 가장 대표적이며 일반적으로 사용하는 것이 Dockerfile 이며, 그 밖에 컨테이너를 이미지로 생성하는 docker commit 명령과 컨테이너의 파일 시스템으로 이미지를 생성하는 docker export 와 docker import 명령이 있다.

 

이미지 공유

  • 도커는 저장소를 사용하여 이미지를 공유
  • 저장소에는 도커 허브뿐만 아니라 다른 프라이빗 이미지 저장소도 시용힐 수 있음

 

컨테이너 생성

  • 도커는 컨테이너를 생성하고 관리를 할 수 있는 컨테이너 런타임
  • 컨테이너를 생성하고 네트워크 또는 볼륨과 같은 도커 오브젝트를 생성한 뒤 컨테이너에 연결하여 사용할 수 있음


도커 설치

사전 패키지 설치

install Docker Engine 페이지를 살펴보면 운영체제 별로 다양하게 설치할 수 있는 방법이 나와있다.

아래 설치는 centOS8 버전 기준으로 기술하겠다.

(1) 이전 버전 삭제

 $ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 

(2) 레포지토리 설정하기

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

(3) 도커 엔진 설치하기

 $ sudo yum -y install docker-ce docker-ce-cli containerd.io

 

(4) 설치된 도커 버전 확인하기

$ docker version

 

 

(5) 도커 서비스 실행하기

  $ systemctl status docker.service
  
  $ systemctl start docker.service
  
  $ systemctl enable docker.service
  or
  $ systemctl status docker.service --now

 

(6) 컨테이너 실행해보기

$ docker run hello-world

'도커 > 개념 및 실습' 카테고리의 다른 글

1, 2, 3장 연습문제  (0) 2021.06.02
03장-3, 컨테이너 관리  (0) 2021.06.02
03장-2, 컨테이너 실행  (0) 2021.06.01
03장-1, docker 명령 - 이미지 다운로드  (0) 2021.05.31
01장, 가상화  (0) 2021.05.31