Docker에 대하여 (23.09.14 계속 추가/수정중)

ouneno·2023년 9월 14일
0

Docker

목록 보기
1/2

Develop faster. Run anywhere.

Docker의 웹사이트에 들어가면 바로 보이는 문구이다.
개발을 빠르게. 어디서든 실행되게.
이게 Docker를 표현하는 핵심이 아닐까 싶다.


첫번째. VM의 등장! VM이 사용하게 된 이유?

여러 운영체제를 사용해야 하지만, 현실적으로는 한 대에 컴퓨터에는 하나의 OS가 존재한다. 한 컴퓨터로 다양한 OS를 사용하기 위해 등장한게 VM(가상머신)!


Docker가 생기게 된게 VM의 한계 때문이라고?

가상머신의 종류인 VMware / VirtualBox 같은 가상머신들은 OS위에 OS를 설치해야하는 상황이였다. Linux OS 위에 WindowOS나 MacOS를 설치하는 방식으로! 그러다보니 당연히 무겁고 느리다는 단점을 가지고 있는거!

가상화/반가상화가 등장했으나, 성능적인 부분이 해결이 되진 않았다.

이후 성능의 저하나 무겁고 느린점들을 개선하기위해 CPU의 가상화기술(HVM)을 이용한 KVM과 Xen(반가상화)이 등장하게 된다.
HVM(CPU의 가상화 기술)을 활용하는 KVM은 전체 가상화를 지원하며 높은 성능을 제공하는 가상화 방식. 반면, Xen은 반가상화를 사용하여 게스트 OS 간에 리소스를 효율적으로 공유하며 가상 머신을 실행한다.


⭐️Container⭐️ 컨테이너?


컨테이너라고 하면 일반적으로 화물들을 싣는 수송용 박스라고 생각을 한다.
여기서 말하는 컨테이너의 개념도 마찬가지이다.
단지 화물을 싣는게 아닌 프로그램과 실행환경, DB서버나 WAS서버까지을 싣는다는거! 어떠한 프로그램들도 Container 것으로 추상화할 수 있다.

💡 일반적으로 알고있는 Container : 화물을 싣는다.

하나의 배다양한 화물 컨테이너들을 실을 수 있다.
컨테이너 안에는 다양한 물품들이 들어있다.(의류, 식료품 등)

💡 Docker Container : 프로그램실행환경을 싣는다.

하나의 서버다양한 컨테이너들을 넣을 수 있다.
OS 안에는 다양한 프로그램들이 들어있다.(Git, Python 등)


Linux가 원조라고?

Linux가 가지고 있던 프로세스를 격리하는 기술들을 한번 더 감싼게 Docker의 Container 기술이다.
리눅스의 경우 이런 방식으로 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리도 딱 프로세스가 필요한 만큼만 사용하기 때문에 성능적으로도 손실이 없다.


그래서 Docker는?

  1. 원하는 개발 환경을 파일에 저장하면, Docker는 내가 원하는 어떤 머신에서든 해당 환경을 똑같이 시뮬레이션 해준다.
    => 어플리케이션을 한번만 도커이미지로 build해놓으면 AWS, Azure, Google Cloud와 같은 다양한 클라우드 환경에서도 일관되게 실행할 수 있다.
  2. Docker가 시뮬레이션 해준 환경들은 각기 독립적으로 존재하기 때문에 원하는 무슨 환경이든 모듈식으로 관리가 가능하다.
    파이썬 서버, 자바 서버, 데이터베이스 서버 등 추가해서 구매할 필요가 없다.
    => 어플리케이션을 한번만 도커 image로 빌드해놓으면 다양한 클라우드환경에서도 일관되게 사용이 가능하다.

도커의 프로세스와 일반 프로그램 다운의 프로세스 흐름

app store - program - process
docker hub - image - container


Doker 관련 사이트

1. docker hub : https://hub.docker.com/

  • docker hub는 원하는 image들을 찾아서 다운받을 수 있는 사이트이다.

    ▼ Docker Official Image : 도커자체에서 믿고 제공하는 이미지
    ▼ 오른쪽의 명령어 : docker를 명령어를 통해 이미지를 다운 받을 수 있는 서비스

2. docs.docker : https://docs.docker.com/

  • 도커 문서. Reference탭을 클릭하여 Command-line reference를 클릭하면 사용할 수 있는 명령어 확인이 가능하다.

단어정리

  • VM(Virtual Machine) - 가상머신
    - virtual : 현실에 존재하지 않는
    - Machine : 기계적인 장치

가상머신은 hostOS위에서 생성되고 관리되며, 각자의 가상머신은 자체 guestOS 체제를 가지고 있다.

  • Kernel(커널) : OS의 꽃. 하드웨어와 소프트웨어 간의 통신과 상호작용을 관리하고 제어하는 소프트웨어의 핵심역할
  • 추상화 : 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
  • Host? Guest?


    내 컴퓨터를 주인인 Host, 내 컴퓨터에 온 손님인 가상머신을 Guest 라고 생각하면 된다!
  • Host OS : 실 컴퓨터에서 돌아가는 OS
  • Guest OS : 가상머신 안에서 돌아가는 OS. 가상화된 환경에서 실행된다.

추가 정리할 내용

최소한의 필요한 환경요소만 묶어서 서비스로 제공하기 때문에 독립성도 유지시켜주고 적은 용량으로도 운영이 가능한 형태로 발전되게 되었다.
이러한 컨테이너 플랫폼 중의 하나가 Docker

어떻게 사용?
어플리케이션을 한번만 도커이미지로 build해놓으면 AWS, Azure, Google Cloud와 같은 다양한 클라우드 환경에서도 일관되게 실행할 수 있다.

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글