Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Kwon's Study Blog !

[Docker] 도커를 사용하는 이유와 도커란 무엇인가 ? 본문

Docker

[Docker] 도커를 사용하는 이유와 도커란 무엇인가 ?

순샤인 2022. 3. 22. 17:40
현재 글은 
https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci/dashboard
을 수강하며 정리한 내용입니다. 
문제시 비공개로 처리 하도록 하겠습니다. 
 

따라하며 배우는 도커와 CI환경 - 인프런 | 강의

이 강의를 통해 도커에 대해서 배울 수 있으며, CI 환경을 구성할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

도커를 사용하는 이유

결론 부터 얘기를 하자면 

어떠한 프로그램을 다운 받는 과정을 굉장히 간단하게 만들기 위해서 입니다.

 

먼저 아래와 같은 예를 들어 보겠습니다.

도커 없이 프로그램 받을때 프로그램을 다운받고 실행하는 순서

프로그램을 다운받아 사용한다면 일반적으로는 위와 같은 과정을 거치게 됩니다.

하지만 갖고 있는 서버, 패키지 버전, 운영체제 등등에 따라

프로그램을 설치하는 과정중에 많은 에러들이 발생할 수 있습니다. 

그것만이 아니라 설치 과정이 다소 복잡할 수 있습니다.

 

이러한 설치 과정을 굉장히 간단하게 만들어 주는게 도커 입니다.

 

한번 간단하게나마 확인할 수 있게, 

프로그램 다운 받는 것을 도커의 유무에 따라 차이점을 한번 살펴 보겠습니다.

 

 

Redis를 다운받는 과정을 통해 도커의 차이점을 확인해 보자.

- 도커 없이 Redis를 다운 받는 과정

redis.io 홈페이지 https://redis.io/download  에 들어가서 나오는 기본 가이드를 따라

터미널에 들어가 다음과 같이 기본 명령어를 입력해 줍니다.

$ wget https://download.redis.io/releases/redis-6.2.6.tar.gz
$ tar xzf redis-6.2.6.tar.gz
$ cd redis-6.2.6
$ make

내 컴퓨터에 wget이란게 없다면 첫번째 과정부터 에러가 발생하게 됩니다. ( : command not found wget)

 

이렇게 무엇을 하나하나 할떄마다 이게 없고, 저게 없고 해서 다양한 에러들을 만나게 될 수 있습니다.

-> 이 redis를 사용하기 위해선 wget도 설치해야 하고, 또 생각보다 다양한 변수들이 발생하게 될 수 있습니다.

-> 생각보다 번거롭다. !!!

 

- 도커를 이용하여 Redis를 다운 받는 과정

터미널에 들어가 다음과 같이 입력해 줍니다. (도커가 물론 설치돼있어야 합니다.)

docker run -it redis

터미널에 위 명령어를 입력하면 

별다른 과정없이 Redis를 다운받고 바로 사용할 수 있는 상태까지 진입을 하였습니다.

-> 확실히 간단해 편리해 보입니다. 

 

 

그렇다면 도커란 무엇일까요 ???

 

 

도커란 무엇인가 ? 

도커가 무엇인지 한마디로 표현하기는 힘들지만, 간단하게나마 도커가 무엇인지 알아보겠습니다.

 

도커란 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구 이며,
컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계입니다.

 

컨테이너는 무엇인가 ?

도커에서 컨테이너는 매우 중요한 개념입니다.

 

- 일반적인 컨테이너

기본적으로 일상에서 사용하는 일반적인 컨테이너의 개념은

자동차, 의류, 음식 등 물품들을 컨테이너에 넣고 다양한 운송 수단을 통해 쉽게 옮길 수 있는 도구를 뜻합니다.

 

- 서버에서의 컨테이너

서버에서의 컨테이너

위의 그림과 같이

컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화하고, 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해주는 도구를 뜻합니다. 

일상에서 사용되는 컨테이너의 개념에서 물건을 손쉽게 운송해주는 것 처럼

컨테이너는 프로그램을 손쉽게 이동, 배포, 관리를 할 수 있게 해줍니다.

-> AWS, Azure, Google cloud등 어디에서든 실행 가능하게 해줍니다.

 

 

도커의 이미지와 컨테이너 정의

도커의 컨테이너는 앞서 설명드렸다시피,

컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적이게 실행되도록 하는 소프트웨어의 표준 단위입니다. 

 

현재까지 여러가지 방향으로 컨테이너를 정의할 떄

간단하고 편리하게 프로그램을 실행 시켜주는 것으로 정의를 내리고 있습니다. 

 

도커 이미지란?

컨테이너 이미지코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지 입니다.

 

아래 그림과 같이

도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성들을 갖고있습니다.

도커 컨테이너는 이미지의 인스턴스이며, 프로그램을 실행합니다.

앞서 설명드린 컨테이너와 이미지의 이론이 너무 어렵게 느껴질 수 있지만 

계속해서 자세히 다룰 것이며

핵심은 

-> 도커 이미지를 이용하여 컨테이너를 만들고

-> 컨테이너를 실행을 하여 컨테이너 안에 있는 애플리케이션이 실행되는 구조입니다. 

 

도커의 실행 흐름

 

항상 도커를 사용할 때에는 ...

1. 먼저 도커 Client (CLI) 에 커맨드를 입력합니다.

2. 그러면 도커 Server(Docker Daemon)이 그 커맨드를 받아서 그것에 따라 이미지를 생성하든 컨테이너를 실행하든 모든 작업을 진행하게 됩니다.

 

docker run hello-world

위 명령어를 커맨드에 입력하게 되면

cli 에서 docker run hello-world 할 경우

위와 같은 결과가 나타나게 됩니다.

 

위에서 hello-world라는 이미지가 없기 떄문에 Unable to find image 'hello-world:latest' locally 라는 문장이 나오는데

현재 docker-hub라는 곳에서 hello-world라는 이미지를 Pulling을 받고 (다운을 받고)

컨테이너를 만들어 실행된 결과를 볼 수 있게 됐습니다.

 

다시한번 실행흐름을 보면

docker run hello-world라는 명령어를 도커 클라이언트에 작성을 하였습니다.

-> 입력을 한게 도커 서버로 전해지게 되고

-> 먼저 할일은 컴퓨터 안에 이미지 Cache 보관 장소에 hello-world라는 이미지가 있는지 확인을 하게 됩니다.

-> 이미지 Cache 보관 장소에 없다면 Unable to find image 'hello-world:latest' locally 라는 문구가 나오게 됩니다.

-> 이미지가 없다면 도커 허브(이미 많은 이미지들이 저장돼있음)라는 장소에서 이미지를 가져오게 됩니다.

-> 가져올 때 Pulling을 하고 가져온 이미지를 실행되게 됩니다.

-> 이미지가 있다면 새로운 이미지를 다운받지 않고 Cache 보관 장소에서 가져오게 됩니다.

 

 

이렇게 간단하게 도커, 컨테이너, 이미지, 실행흐름 등을 살펴보았고 

다음 글에선 기존에 사용하던 가상화 기술과의 차이를 알아보도록 하겠습니다.

 

아자아자!