Docker

leehyunjon·2022년 11월 9일
0

Infra

목록 보기
2/2

가상화

하나의 물리적 서버에서 웹 서비스(A)를 운용하고 있고, 다른 웹 서비스(B)를 만들어 새로 배포하려고 합니다. 하지만 기존에 운용하고 있던 웹 서비스 A와 새로 배포하려는 웹 서비스 B와의 기술 스펙이 달라서 두개의 서비스를 동시에 수행시킬수 없는 문제가 발생하게 됩니다.

이러한 문제를 해결해주기 위해서는 다른 서버를 구매해서 새로 배포하려는 웹 서비스(B)를 배포하는 방법도 있습니다.

하지만 만약 현재 운용하고 있는 서버가 너무너무 비싸고 좋은거라 하나에서 사용하고 싶을때, 하나의 환경에서 다수의 서비스를 운용할 수 있도록 여러 환경을 생성하는 기술을 가상화라고 합니다.

출처

위의 그림과 같이 가상화는 하드웨어의 OS(Host OS)위에 여러 OS(Guest OS)를 생성하여 각각 다른 환경으로 서비스를 제공해줄 수 있습니다.

이때, 각각의 다른 환경을 구성하는 시스템을 VM(Virtual Machine)이라고 하며, 가상화 기술을 통해 여러개의 OS를 하나의 OS에 생성하여 VM을 생성하고 구동하는 시스템을 Hypervisor라고 합니다.

장점

  • 하나의 OS에서 다른 환경의 OS를 생성하여 독립적으로 시스템을 운용할 수 있습니다.

단점

  • OS위에서 다른 OS가 운용되고 있기 때문에 무겁고 느리고 오버헤드가 큽니다.

이미지

어떤 시스템의 상태를 사진으로 찍듯 저장한 파일을 뜻합니다.

가상환경에서 프로그램 파일이나 설정들을 이미지화하여 각 가상환경에 이미지를 받아 실행할수 있습니다.

위 사진에서 App1, App2Bins/Libs 등이 이미지가 될 수 있습니다.


Container

하나의 물리적 서버에서 가상화된 격리된 공간을 사용하지만 별도의 운영체제를 운용하지 않고 서버의 OS를 공유하는 기술을 Container라고 합니다.

출처

Container는 별도의 운영체제를 생성하지 않는 대신 linux의 커널에서 제공하는 cgroup이나 namespace기능을 사용하여 프로세스를 격리시킵니다.

그렇기 때문에 운영체제를 별도로 생성하지 않아도 격리된 프로세스를 통해 프로세스가 필요한 리소스(CPU, 메모리)만 Host OS에서 제공하여 Container를 독립적으로 수행할수 있게 됩니다.

장점

  • 애플리케이션을 구동하는데 필요한 라이브러리 및 실행 파일만 가지고 있기 때문에 VM보다 이미지 용량이 작아 배포가 빠릅니다.
  • 이미지의 실행과 배포가 빠릅니다.
  • OS수준의 가상화이기 때문에 Host OS에서 환경에 상관없이 수행되어 이식성이 높습니다.

Docker

Docker란, Container기술을 사용해서 애플리케이션에 필요한 환경을 빠르게 구축하고 테스트 및 배포할 수 있게 해주는 플랫폼.

출처

위의 이미지에서 Container기술을 사용한 Docker를 내부적으로 잘 설명해주고 있습니다.

각 Container는 커널을 이용해서 Host OS에서 Container에서 사용할 프로세스에게 필요한 리소스를 제공해주고 있음을 확인할 수 있습니다.
이렇게 Container가 프로세스를 Host OS에서 격리시켜 관리하기 때문에 Container에서 어떠한 설정을 하든 Host OS에 영향을 미치지 않고 독립적인 환경을 보장받을 수 있게됩니다.

그리고 Docker는 이러한 Container들을 Docker Engine을 통해 관리할 수 있습니다.

Docker Engine은 사용자가 Docker를 쉽게 사용할 수 있도록 해주는 주체

기능

  • 컨테이너 관리
    • 컨테이너의 라이프 사이클 관리
  • 이미지 관리
    • 컨테이너 생성을 위한 이미지 관리
  • 볼륨 관리
    • 컨테이너의 데이터를 저장하기 위한 저장소 역할
  • 네트워크 관리
    • 컨테이너 접속을 위한 네트워크 관리

Kubernates


Reference

https://www.youtube.com/watch?v=IiNI6XAYtrs

https://jaimemin.tistory.com/1827

https://giljae.medium.com/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-microservices-architecture-%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90-7c45615cfe1a

profile
내 꿈은 좋은 개발자

0개의 댓글