[Tistory] Docker

원글 페이지 : 바로가기

도커란 무엇인가 Linux 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼. 가상화 : 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술 컨테이너 : 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술 => 도커는 독립된 환경을 만들어 하드웨어를 효율적으로 활용하는 기술 도커의 개발 배경 여러 애플리케이션을 구동하기 위한 다양한 패키지, 환경설정 통일 과정 속에서 패키지끼리의 충돌이나 환경변수 충돌과 같은 문제 발생 => 애플리케이션별로 환경변수와 패키지를 분리해 가상화시켜 구동하는 VM(Virtual Machine) 탄생. 그러나 VM은 하이퍼바이저를 이용하기 때문에 환경 자체가 상당히 무거움 => 운영체제 단에서 가상화를 실행하는 컨테이너가 나왔고 이 컨테이너 기술을 편리하게 사용할 수 있도록 개발된 것이 Docker 가상화 역사 Fully Emulated(완전 가상화) – 모든 시스템 요소가 에뮬레이터 안에서 돌아감 – CPU, 하드디스크, 마더보드 등 모든 요소를 에뮬레이터로 구현하여 OS와 연동 – 느리다 Paravirtualization(반 가상화) – Guest OS는 하이퍼바이저와 통신 – 하이퍼바이저 : OS와 하드웨어 사이에 존재하는 가상화 매니저 – 완전 가상화에 비해 속도 향상 – 몇몇의 경우 여전히 에뮬레이터 필요(느림) Hardware Virtual Machine, HVM(하드웨어 가상 머신) – 하드웨어에서 직접 가상화 지원 – Guest Os가 하드웨어와 직접 통신 -> 빠름 – 하이퍼바이저를 이용해 여러 개의 가상 머신을 단일 서버에서 실행 가능 Container Virtualization(컨테이너 가상화) – Docker : 애플리케이션과 필요한 종속성을 컨테이너 이미지를 사용해 애플리케이션을 격리된 환경에서 실행 – Kubernetes : 컨테이너 오케스트레이션 플랫폼, 컨테이너의 배포/관리/확장 자동화 가상화와 컨테이너 분할된 가상 머신들은 각각 독립적인 환경으로 구동된다. 이 때 베이스가 되는 기존의 환경을 Host OS, 가상 머신으로 분할된 각각의 환경을 Guest OS라 한다. 가상 머신(VM)을 생성하기 위해서는 하이퍼바이저 또는 가상 머신 모니터라고 불리는 소프트웨어를 이용한다. 하이퍼바이저는 호스트 하드웨어에 설치되어 호스트와 게스트를 나누는 역할을 하고, 각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받는다. 이 때 하이퍼바이저에 의해 생성된 게스트는 호스트나 다른 게스트와 상호 간섭하지 않고 완전히 분리된 환경에서 구동된다. 하이퍼바이저를 활용하면 마치 하드웨어가 여러 개인 것처럼 하나의 서버를 여러 명이 나눠 쓸 수도 있고, 컴퓨터 한 대에서 서로 다른 OS를 동시에 사용할 수도 있다. 하지만 가상 머신으로 무언가 하려면 반드시 하이퍼바이저를 거쳐야 하기 때문에 속도 저하가 발생한다. 또 가상 머신은 해당 환경을 구동하는 데 필요한 파일을 모두 포함하고 있기 때문에, 가상 머신을 배포할 때 만들어지는 이미지의 크기가 매우 커진다는 한계점이 있다. 하이퍼바이저와 달리 컨테이너는 가상의 OS를 만드는 것은 아니다. 컨테이너는 베이스 환경의 OS를 공유하면서 필요한 프로세스만 격리하는 방식으로, 커널을 공유하기 때문에 호스트 OS의 기능을 모두 사용할 수 있다. 그렇기 때문에 컨테이너 위에서는 호스트 OS와 다른 OS를 구동할 수 없다. 대신 격리시킬 애플리케이션과 거기에 필요한 파일이나 특정 라이브러리 등 종속 항목만 포함하기 때문에 배포를 위해 생성되는 이미지의 용량이 작아진다는 장점이 있다. 운영체제가 아닌 프로세스이며, 하이퍼바이저를 거칠 필요가 없어 실행 속도가 빠르다. 이미지는 가상 머신이나 컨테이너 또는 프로그램을 실행하는 데 필요한 파일과 라이브러리, 설정 등을 가지고 있는 파일 이미지는 레이어라는 계층 구조로 이루어져 있는데, 변경 사항이 생기면 새로운 레이어를 추가해서 기록한다. 이미지 전체를 새로 받지 않고 해당 레이어만 받는 것으로 이미지를 업데이트할 수 있다는 장점이 있다 이미지 실행 => 프로세스, 즉 컨테이너 Docker Registry – 도커 이미지를 관리하는 일종의 저장소 – 이미지를 저장하고 배포하는 표준 방법으로 Apache 라이센스를 따르는 오픈소스 – 위 이미지의 빨간 박스에 해당 – Docker Hub는 널리 사용되는 공개 레지스트리 – 보안 이슈나 특정 환경에서의 요구사항 때문에 private registry를 사용하기도 함 Docker Hub – 도커 레지스트리 중 하나, 도커 커뮤니티에서 공개적으로 사용 가능한 수많은 도커이미지를 제공하는 중앙 저장소 – 도커 엔진에 기본으로 설정된 레지스트리, 로컬 컴퓨터에서 존재하지 않는 이미지를 내려받으려 할 때 가장 먼저 찾아보는 곳 Docker compose – 단일 서버에서 여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구 – 여러 개 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작 – 설정 파일은 도커 엔진의 run 명령어의 옵션을 그대로 사용할 수 있으며, 각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의 가능 – 컨테이너의 수가 많아지고 정의해야할 옵션이 많아진다면 도커 컴포즈 사용하는 것이 좋다. 출처 : https://velog.io/@markany/%EB%8F%84%EC%BB%A4%EC%97%90-%EB%8C%80%ED%95%9C-%EC%96%B4%EB%96%A4-%EA%B2%83-1.-%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80 도커에 대한 어떤 것 : 1. 도커란 무엇인가? 개발팀, 운영팀 가리지 않고 누구나 좋아하는 도커란 무엇일까요? velog.io https://velog.io/@jkseo50/Docker-Kubernetes-6.-%EB%8F%84%EC%BB%A4-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC [Docker / Kubernetes] 6-1. 도커 레지스트리 도커 이미지를 저장하고 관리하는 도커 레지스트리에 대해 자세히 알아봅시다. 🤔 velog.io https://seosh817.tistory.com/387 [Docker] 도커 컴포즈(Docker compose) – 개념 정리 및 사용법 이번 포스트에서는 도커 컴포즈에 대해 정리하겠습니다. 도커 컴포즈란? 도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 seosh817.tistory.com https://magical52.tistory.com/188 가상화 ✅ 아래 내용들에 대해서 알아보자 – 가상화 – 가상화 역사 – AWS와 가상화 가상화 가상화는 하나의 물리적 리소스(ex. 단일 컴퓨터의 하드웨어) 요소를 가상 머신(VM)이라고 하는 다수의 가상 환경 magical52.tistory.com

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다