Docker

juryang han·2022년 2월 15일
0

도커(Docker)란?

도커란?

텍스트GO 언어로 작성된 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼

컨테이너라 하면 네모난 화물 수송용 박스가 먼저 떠오른다. 컨테이너 안에는 옷, 신발 등 다양한 화물을 넣을 수 있고 규격화되어 다양한 운송수단으로 쉽게 옮길 수 있다.

서버에서도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있다.

가상화를 사용하는 이유는?

서버 관리자 입장에서 CPU사용률이 10%대 밖에 되지 않는 활용도가 낮은 서버들의 리소스 낭비일 수밖에 없다. 그렇다고 모든 서비스를 한 서버안에 올린다면 안정성에 문제가 생길 수도 있다. 그래서 안정성을 높이며 리소스도 최대한 활용할 수 있는 방법으로 나타난게 서버 가상화이다. 모두가 아는 대표적인 가상화 플랫폼으로는 VM이 있다.

이미지

Docker hub에서 가져온 사진 위의 사진에 있는 것처럼 각각 하나의 프로그램을 이미지라고 부른다. 이미지는 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하고 있고 변하지 않는다.
즉, 같은 이미지로 여러 개의 컨테이너를 생성할 수 있고, 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않고 그대로 존재한다.

컨테이너

도커의 이미지가 실행된 상태이다. OS를 가상화하는 것이 아니라 프로세스가 격리된 공간에서 동작하는 기술이다.

º 서버(호스트 OS) 운영상에서 리소스를 논리적으로 구분하여 마치 별도의 서버인 것처럼 사용할 수 있게 하는 기술
º OS뿐만 아니라 Application단위도 가능
º 컨테이너를 생성, 삭제, 시작, 중지, 이동, 백업을 쉽게 할 수 있다.

Virtual Machine

👀 호스트 OS위에 게스트 OS를 가상화하여 사용하는 방식

✔ 여러가지 OS를 가상화 할 수 있고 비교적 사용법이 간단하다.
✔ 무겁고 느리다 -> VM은 OS를 자체적으로 가지고 있어야해서 용량이 커지기 때문이다.

Docker

👀 호스트 OS 위 도커 엔진 위에서 바로 동작하며 호스트 OS 자원(커널)을 공유하고, 프로세스를 격리하는 방식

✔ Host OS 위 Docker 엔진 위에서 바로 동작하며 Host OS 자원(커널)을 공유(논리적 구분)하기 때문에 Host OS 자원이 좋을 수록 빠르다.
✔Container 위에 Docker engine 을 설치해 또 Container를 올릴 수 있다.

즉, 어플리케이션 레벨에서는 각각의 어플리케이션을 격리해서 실행 할 수 있다. 그래서 하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행할 수 있고, CPU나 메모리는 프로세스가 필요한 만큼만 추가로 사용하기 때문에 성능적으로도 거의 손실이 없다.

0개의 댓글