도커란 무엇인가?

2021. 5. 29. 14:20카테고리 없음

1. Title (주제) :
도커란 무엇인가?

2. Why (왜) :
사수님이 공부하래..
뭔지 설명하고 어떻게 쓰이는지 정도 알아야할듯

3. How (어떻게) :
정의랑 활용도 찾아서 정리해볼게

출처: https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html#%EC%84%9C%EB%B2%84%EB%A5%BC-%EA%B4%80%EB%A6%AC%ED%95%9C%EB%8B%A4%EB%8A%94-%EA%B2%83

 

1. 도커(Docker)란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

기존의 OS 를 뗴어 가상화하는 VMware 나 VirtualBox 같은 가상머신과는 달리

OS는 같이 쓰고 프로세스만 격리하는 방식으로 가볍고 빠르게 동작한다.

CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없다.

 

Q> OS는 하나인데, 어떻게 여러개의 서로 다른 OS 서버를 쓰는것처럼 쓸수있지?

A> 이미지 방식이라 가능하다.

 

도커핵심개념 2가지 "컨테이너"와 "이미지"

 

이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다. 

컨테이너는 이미지를 실행한 상태이고 추가되거나 변하는 값도 컨테이너에 저장된다.

ex) ubuntu 이미지는 ubuntu 를 실행하기위한 모든 파일을 가지고 있다.

 

 

새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 된다.

도커 이미지는 Docker hub에 등록하거나 Docker Registry저장소를 직접 만들어 관리할 수있다.

 

레이어 저장방식

도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백메가MB에 이른다. 처음 이미지를 다운받을 땐 크게 부담이 안되지만 기존 이미지에 파일 하나 추가했다고 수백메가를 다시 다운받는다면 매우 비효율적일 수 밖에 없다.

도커는 이런 문제를 해결하기 위해 레이어라는 개념을 사용하고 

유니온 파일시스템을 이용해 여러개의 레이어를 하나의 파일시스템으로 사용할 수있게 해준다.!

 

ubuntu 이미지가 A + B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 A + B + C + nginx가 됩니다. webapp 이미지를 nginx 이미지 기반으로 만들었다면 예상대로 A + B + C + nginx + source 레이어로 구성됩니다. webapp 소스를 수정하면 A, B, C, nginx 레이어를 제외한 새로운 source(v2) 레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있다!

 

 

DockerHub 

Docker도 Hub 가 있다! 

도커 이미지의 용량은 수백메가로 수기가가 넘는 경우도 흔하다.

이렇게 큰용량의 이미지를 서버에 저장하고 관리하는 것은 쉽지 않은데, Docker hub를 통해 

공개 이미지를 무료로 관리해준다! 

 

Q> 지금 쓰고 있는 가상 머신을 도커로 바꾸면 어떤가 보안에는 어떤 이슈가 있을까?

 

 

-------------

2.도커 설치하기

window 에 설치했을떄, 도커는 리눅스 컨테이너이므로 실제로는 가상머신에 설치되었다.

사용자는 가상머신을 사용한다는 느낌이 전혀 안드는데 신경써 설계하였다.

ex) 포트를 연결하기 위해 컨테이너의 특정포트를 가상머신에 연결하고 다시 windows의 포트와 연결해야 한다.

디렉토리 연결시 가상머신과 공유하고 다시 컨테이너와 연결해야 한다.이런 한단계 추가적으로 거칠 부분을 자연스럽게 처리해준다.

이때, docker for windows 는 Hyper-V 기능을 이용한다. 따라서 OS 가 최신버전이 아니면 동작 하지 않을 수도 있다.

 

도커를 설치하자마자 이 자식이 반겨준다.

그땐, 아래 링크를 따라 하면된다.

핵심은 패키지 설치

https://docs.microsoft.com/ko-kr/windows/wsl/install-win10

 

Windows 10에 WSL 설치

Bash 터미널을 사용하여 Linux 배포(Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin 및 Alpine 포함)를 Windows 10 머신에 설치하는 방법을 알아봅니다.

docs.microsoft.com

단순화된 설치 vs 수동설치 

단순화된 설치가 안되서

6단계함..

 

하니까 도커 잘됨! 

짜잔!

 

 

run명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 없다면 다운로드(pull)를 한 후 컨테이너를 생성(create)하고 시작(start) 합니다.

 

위 예제는 ubuntu:16.04 이미지를 다운받은 적이 없기 때문에 이미지를 다운로드 한 후 컨테이너가 실행되었습니다. 컨테이너는 정상적으로 실행됐지만 뭘 하라고 명령어를 전달하지 않았기 때문에 컨테이너는 생성되자마자 종료됩니다. 컨테이너는 프로세스이기 때문에 실행중인 프로세스가 없으면 컨테이너는 종료됩니다.

 

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html