도커(Docker)

도커 설치에 앞서 도커를 사용하는 이유에 관해서 간단하게 짚어본다.

우리가 도커를 사용하는 가장 큰 목적은 무엇보다 "개발의 편리함""빠른 배포" 일 것이다.

"어느 환경에서나 도커 엔진만 있다면 컨테이너 이미지를 실행하여 동일한 환경을 만들어 준다" 가 위 두 가지 목적의 근거가 될 수 있다.

 

결론적으로 도커란 "서비스 개발 및 편리한 배포"를 위한 도구로써,

2013년에 새롭게 등장한 "컨테이너" 기반의 가상화 도구이다.

 

가상화의 대표적인 두 가지 방법으로는,

 

- Hypervisor Virtualization(하이퍼바이저) :

• Type 1:  

베어메탈(Bare-Metal Hypervisor)라고도 불리우며 아무 것도 설치 되어있지 않은

물리적 하드웨어 위에 하이퍼바이저가 위치하여 N개의 OS를 하이퍼바이저가 관리하는 구조로,

구조상 가상머신과 하드웨어 사이에 별도의 호스트 OS가 없기 때문에 Type 2보다 효율적인 면에서 우세하다고 하여

가상화 서버를 구축할 때 주로 이용된다고 하지만, 구축 및 관리면에서 단점이 존재한다고 한다.

이 베어메탈(Type 1)가상화 방식도 세부적으로 또 한 번 나누어지지만 해당 포스트에서는 다루지 않는다.

 

(좌) Container 가상화 구조의 도식화 / (우) Bare-Metal 가상화 구조의 도식화

 

 

• Type 2:

현재 우리가 공부를 함에 있어서 가장 많이 사용되는 가상화 구조로 호스트 기반 하이퍼바이저(Hosted Based Hypervisor)라고 불리우며

물리적인 하드웨어(PC / Workstation)의 기존의 OS(Windows, MacOS, Linux ...)위에 가상화 소프트웨를 통하여,

해당 소프트웨어가 호스트(Host)와 가상 호스트(Guest)에게 물리적인 리소스를 분리/할당 하여 가상머신을 생성하는 형태를 의미한다.

(VMWare, Virtualbox, UTM(For Mac) ... 등이 이에 해당)

 

(좌) Hosted Based 가상화 구조의 도식화 / (우) Container 가상화 구조의 도식화

 

 

- Container Virtualization(컨테이너 가상화):

리눅스 커널(Kernel)에 기반하여사용되는 가상화 방식으로, 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며

계층화된 파일 시스템을 기반으로 해서 효율적으로 이미지 API를 프로세스 실행환경으로 구축하게 된다.

앞에서 소개된 가상화 방식과 가장 큰 차이점으로는 VM(가상머신) 이 각각의 프로세스로

존재하기 때문에 호스트 머신의 물리적인 하드웨어를 할당받는 것이 아닌

Linux OS 안에 하나의 프로세스로 존재하게 된다는 것이다.

 

풀어서 말한다면 여타 다른 가상화와는 달리 컨테이너 가상화 서비스에서는

서비스(NginX, Apache, Database ...)가 별도의 운영체제 위에서 실행되는 것이 아닌

그저 시스템이 실행중인 프로세스의 형태로 구동되는 것으로 가볍고 빠르다는 장점이 존재한다.

따라서 리소스에 대한 부담이 감소하게 된다. 물론 이에따른 단점도 분명 존재한다.

 

 

* 실습환경 : Intel i7-1260P(AMD64) /  VMWare Workstation 16

** 네트워크 대역 : 192.168.100.0/24

*** 해당 실습에서 사용된 가상머신 : Ubunser(20.04)

 

 

● 도커 수동 설치(Docker Manual Build)

Build Docker

본격적인 도커 환경 구축에 앞서 VMWare Workstation을 사용하는 독자라면

Setting(가상머신) -> Processors -> 우측 Virtualization Engine -> Virtualization Intel VT-x/EPT or AMD-V/RVI

에 진입하여 체크박스에 체크가 되어있는지 확인해준다.

(체크가 되어있어야 가상화 지원이 가능)

 

 

[Docker Maunual Build]
sudo apt update -y && sudo apt upgrade -y
# 최신 패키지 유지를 위한 레포지토리 업데이트를 진행

sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 
# 도커환경 구성에 필요한 종속 패키지를 Install

su -c "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -"
# 외부 저장소에서 Install 해줄 Docker 패키지의 무결성 검증을 위한 Key를 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Docker 패키지를 다운받기 위한 레포지토리를 임의로 추가

sudo apt update -y
# 추가된 레포지토리 적용을 위한 업데이트

sudo apt install -y docker-ce docker-ce-cli containerd.io 
# Docker 실행에 필요한 구성 패키지 다운로드

 

 

/etc/docker/daemon.json 파일의 내용

 

sudo vim /etc/docker/daemon.json
# Docker 데몬을 새롭게 생성해주기 위해 에디터로 파일을 편집

[편집 내용]
{
        "exec-opts" : ["native.cgroupdriver=systemd"],
        "log-driver" : "json-file",
        "log-opts" : { "max-size" : "100m" },
        "storage-driver" : "overlay2"
}
# json 포맷으로 파일을 작성해주었으며, 오타에 유의하여 작성

sudo mkdir -p /etc/systemd/system.docker.service.d
# rootless 모드에서 사용될 디렉토리를 새롭게 생성

sudo systemctl daemon-reload && sudo systemctl restart docker && sudo systemctl enable docker.service
# 새롭게 생성된 데몬 적용을 위해 reload, Docker 서비스를 재시작하여 Service Status를 확인

 

 

Build Docker

"systemctl status ~" 커맨드를 이용하여 도커 서비스의 작동 여부를 확인한다.

(Error 발생 시 경험 상 대부분의 문제가 앞에서 json 포맷으로 작성한 데몬파일인 경우가 많았으니 이 부분 참고)

 

 

Build Docker

필자는 alias를 사용하여 "docker"를 "dkr"로 줄여서 사용함

기존 명령어는 "sudo docker run hello-world"

 

위의 그림을 확인해보면

내가 구축 한 도커의 로컬 영역에 "Hello World"라는 이미지가 존재하지 않기에

Docker Image를 도커의 Default Regitstry "https://hub.docker.com/" 경로에서 Pull 하여

가져오는 것이 확인되면 정상적으로 도커 엔진이 설치된 것

'Cloud_Virtualization' 카테고리의 다른 글

[Cloud_Virtualization]Execute_Docker  (0) 2023.03.14

+ Recent posts