예전에 가볍게 읽는 도커 안내서라는 내용으로 짧게 강의를 한 적이 있었는데 정리한 내용을 묵히기 아쉬워서 공유하려고 한다.
도커의 등장
- 프로젝트를 할 때 잘 동작하던 라이브러리가 다른 라이브러리를 설치하니 안되거나, OS 버전이 맞지 않아 에러가 발생하는 경험을 해본 적이 있을 것이다.
- 이렇듯 하나의 서버에 여러개의 프로그램을 설치하는 것도 문제이지만 서로 사용하는 라이브러리의 버전이 다르거나 동일한 포트를 사용하는 경우는 설치가 훨씬 더 까다롭다.
- 특히 요즘은 MSA를 지향하면서 굉장히 많은 서버를 설치하고 관리해야 하는 일이 많아졌고 이러한 서버 관리에 대한 혁신적인 기술을 필요로 하였다.

도커가 뭔가요?
정의
- 컨테이너 기반의 오픈소스 가상화 플랫폼
가상화란
- 가상화는 물리적인 하드웨어(HW) 장치를 논리적인 객체로 추상화 하는 것을 의미
- 하나의 하드웨어(HW)를 여러개 처럼 동작시키거나 반대로 여러 개의 장치를 묶어 하나의 장치 인 것처럼 사용자에게 공유자원으로 제공할 수 있다는 것
- 일반적으로 우리는 하나의 컴퓨터(서버)에 하나의 OS를 설치해서 사용
- 가상화를 이용하면 여러 운영 체제를 하나의 물리적 머신에서 동시에 실행
가상화의 동작방식
1. 호스트형 가상화: 호스트 OS위에 게스트 OS 전체를 가상화하여 사용. VMWare, Virtual Box

2. 하이퍼바이저 가상화: 호스트 OS 없이 하드웨어에 하이퍼바이저를 설치하여 사용.
- 전가상화: DOM0에서 번역을 한 후 하이퍼바이저에 요청을 날리면 하이퍼바이저가 하드웨어에 전달.
- OS의 종류에 영향을 받지 않는다.
- 번역가가 있기 때문에 속도가 느리다.

- 반가상화: 성능 문제를 해결하기 위해 나온 기술로, 직접 각각의 가상 머신에서 번역을 해서 하이퍼바이저에 전달해주는 방식

3. 컨테이너 가상화: 호스트 OS 위에 논리적으로 컨테이너를 나누어 사용.

컨테이너
- 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술
- 커널을 공유하는 방식이기 때문에 OS 입장에서는 그냥 프로세스를 실행하는 것이기 때문에 실행 속도가 빠르고, 성능 상의 손실이 거의 없다.
- 가상화 방식에서는 VM을 나눌 때 각 VM마다 OS를 갖는다. 하지만 컨테이너는 다르게 애플리케이션 간에 OS(운영체제) 또한 공유를 한다.
- VM보다 더욱 가벼워 확장성이 뛰어나며 이식성 또한 뛰어나는 등 다양한 이점

이미지(Image)
- 컨테이너 실행에 필요한 파일과 설정값(포트번호, 명령어…)등을 포함하고 있는 것
- 우분투 이미지는 우분투를 실행하기 위한 모든 파일을, MySQL이라면 MySQL을 위한 모든 파일을 가지고 있음.
- 상태값을 가지지 않고 변하지 않음(Immutable)
- 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장
- 이미지는 도커 허브에 등록되어 다운로드 받아 사용할 수 있다.
- 레이어 저장
- 이미지는 여러 파일이 겹겹이 쌓아져있는 형태.
-
- 이렇게 함으로써 기존 이미지에 새로운 파일이 추가되었을 때 다시 새로운 이미지를 다운받지 않고 기존 이미지에 쌓기만 하면 되기 때문에 효율적.

도커파일
- 도커 허브에 있는 이미지 뿐만 아니라 Dockerfile로 직접 이미지를 만들 수도 있다.
- 자체 DSL(Domain-specific language) 언어를 이용하여 이미지 생성 과정을 작성
# vertx/vertx3 debian version
FROM ubuntu:18.04
MAINTAINER boaz@boaz.com
ADD build/distributions/app-3.3.1.tar /
ADD config.template.json /app-3.3.1/bin/config.json
ADD docker/script/start.sh /usr/local/bin/
RUN ln -s /usr/local/bin/start.sh /start.sh
EXPOSE 8080
EXPOSE 7000
CMD ["start.sh"]
참고
https://eunjinii.tistory.com/m/10
하드웨어 가상화(Virtualization) 뜻, 가상화 기술 종류 4가지, 가상머신(Virtual Machine)의 단점 3가지
내가 공부하고 이해한 대로 쉽게 정리한 가상화의 의미와 가상화 기술 종류, 가상머신의 문제점에 대한 내용. 1. 가상화의 의미 가상화는 컴퓨터 리소스를 추상화한다는 광범위한 의미를 가진다
eunjinii.tistory.com
'Docker & Kubernetes' 카테고리의 다른 글
Kubernetes context의 역할 알아보기 (0) | 2023.08.27 |
---|---|
Docker in Docker 사용해보기 (0) | 2023.07.31 |
쿠버네티스를 구축할 때 swap 메모리를 꺼놓아야 하는 이유 - swap 메모리란/꺼놓아야 하는 이유 (3) | 2022.04.03 |
JSON과 비교를 통한 YAML 알아보기 (0) | 2022.03.31 |
kubeadm란? 쿠버네티스에서의 클러스터/역할 (2) | 2022.03.28 |
예전에 가볍게 읽는 도커 안내서라는 내용으로 짧게 강의를 한 적이 있었는데 정리한 내용을 묵히기 아쉬워서 공유하려고 한다.
도커의 등장
- 프로젝트를 할 때 잘 동작하던 라이브러리가 다른 라이브러리를 설치하니 안되거나, OS 버전이 맞지 않아 에러가 발생하는 경험을 해본 적이 있을 것이다.
- 이렇듯 하나의 서버에 여러개의 프로그램을 설치하는 것도 문제이지만 서로 사용하는 라이브러리의 버전이 다르거나 동일한 포트를 사용하는 경우는 설치가 훨씬 더 까다롭다.
- 특히 요즘은 MSA를 지향하면서 굉장히 많은 서버를 설치하고 관리해야 하는 일이 많아졌고 이러한 서버 관리에 대한 혁신적인 기술을 필요로 하였다.

도커가 뭔가요?
정의
- 컨테이너 기반의 오픈소스 가상화 플랫폼
가상화란
- 가상화는 물리적인 하드웨어(HW) 장치를 논리적인 객체로 추상화 하는 것을 의미
- 하나의 하드웨어(HW)를 여러개 처럼 동작시키거나 반대로 여러 개의 장치를 묶어 하나의 장치 인 것처럼 사용자에게 공유자원으로 제공할 수 있다는 것
- 일반적으로 우리는 하나의 컴퓨터(서버)에 하나의 OS를 설치해서 사용
- 가상화를 이용하면 여러 운영 체제를 하나의 물리적 머신에서 동시에 실행
가상화의 동작방식
1. 호스트형 가상화: 호스트 OS위에 게스트 OS 전체를 가상화하여 사용. VMWare, Virtual Box

2. 하이퍼바이저 가상화: 호스트 OS 없이 하드웨어에 하이퍼바이저를 설치하여 사용.
- 전가상화: DOM0에서 번역을 한 후 하이퍼바이저에 요청을 날리면 하이퍼바이저가 하드웨어에 전달.
- OS의 종류에 영향을 받지 않는다.
- 번역가가 있기 때문에 속도가 느리다.

- 반가상화: 성능 문제를 해결하기 위해 나온 기술로, 직접 각각의 가상 머신에서 번역을 해서 하이퍼바이저에 전달해주는 방식

3. 컨테이너 가상화: 호스트 OS 위에 논리적으로 컨테이너를 나누어 사용.

컨테이너
- 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술
- 커널을 공유하는 방식이기 때문에 OS 입장에서는 그냥 프로세스를 실행하는 것이기 때문에 실행 속도가 빠르고, 성능 상의 손실이 거의 없다.
- 가상화 방식에서는 VM을 나눌 때 각 VM마다 OS를 갖는다. 하지만 컨테이너는 다르게 애플리케이션 간에 OS(운영체제) 또한 공유를 한다.
- VM보다 더욱 가벼워 확장성이 뛰어나며 이식성 또한 뛰어나는 등 다양한 이점

이미지(Image)
- 컨테이너 실행에 필요한 파일과 설정값(포트번호, 명령어…)등을 포함하고 있는 것
- 우분투 이미지는 우분투를 실행하기 위한 모든 파일을, MySQL이라면 MySQL을 위한 모든 파일을 가지고 있음.
- 상태값을 가지지 않고 변하지 않음(Immutable)
- 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장
- 이미지는 도커 허브에 등록되어 다운로드 받아 사용할 수 있다.
- 레이어 저장
- 이미지는 여러 파일이 겹겹이 쌓아져있는 형태.
-
- 이렇게 함으로써 기존 이미지에 새로운 파일이 추가되었을 때 다시 새로운 이미지를 다운받지 않고 기존 이미지에 쌓기만 하면 되기 때문에 효율적.

도커파일
- 도커 허브에 있는 이미지 뿐만 아니라 Dockerfile로 직접 이미지를 만들 수도 있다.
- 자체 DSL(Domain-specific language) 언어를 이용하여 이미지 생성 과정을 작성
# vertx/vertx3 debian version
FROM ubuntu:18.04
MAINTAINER boaz@boaz.com
ADD build/distributions/app-3.3.1.tar /
ADD config.template.json /app-3.3.1/bin/config.json
ADD docker/script/start.sh /usr/local/bin/
RUN ln -s /usr/local/bin/start.sh /start.sh
EXPOSE 8080
EXPOSE 7000
CMD ["start.sh"]
참고
https://eunjinii.tistory.com/m/10
하드웨어 가상화(Virtualization) 뜻, 가상화 기술 종류 4가지, 가상머신(Virtual Machine)의 단점 3가지
내가 공부하고 이해한 대로 쉽게 정리한 가상화의 의미와 가상화 기술 종류, 가상머신의 문제점에 대한 내용. 1. 가상화의 의미 가상화는 컴퓨터 리소스를 추상화한다는 광범위한 의미를 가진다
eunjinii.tistory.com
'Docker & Kubernetes' 카테고리의 다른 글
Kubernetes context의 역할 알아보기 (0) | 2023.08.27 |
---|---|
Docker in Docker 사용해보기 (0) | 2023.07.31 |
쿠버네티스를 구축할 때 swap 메모리를 꺼놓아야 하는 이유 - swap 메모리란/꺼놓아야 하는 이유 (3) | 2022.04.03 |
JSON과 비교를 통한 YAML 알아보기 (0) | 2022.03.31 |
kubeadm란? 쿠버네티스에서의 클러스터/역할 (2) | 2022.03.28 |