[Tistory] [Docker] Docker란 무엇일까?

원글 페이지 : 바로가기

기존 진행했던 프로젝트 및 여러 해외 자료들을 보며 docker가 흔하게 사용되는 것은 다들 알고 있을 것이며, 나 또한 원리는 정확히 파악하지 못한 채 사용해 왔다. 매번, Docker는 정확히 무엇이고 왜 이렇게 이슈가 되는 것일까?라는 생각이 있었지만 이번 포스팅을 통해 Docker가 어떻게 등장하게 되었는지? Docker란 무엇인지 알아보고자 한다. 1. Docker의 등장 배경 Docker의 등장 배경에는 여러 가지 이유가 있지만, 가장 큰 이유는 클라우드 환경의 발전과 환경 관리(버전 관리)의 문제라고 생각한다. 기존 시스템에서 여러 애플리케이션을 구동하고 배포하기 위해서는 하나로 통일된 형태의 환경설정이 필요했으며 이는 여러 애플리케이션을 구동할 때 환경 충돌과 같은 시스템 동작에 치명적인 문제로 이어졌다. 배포할 애플리케이션의 개수가 작다면 필요한 서버의 개수가 적기 때문에 시스템적인 측면(서버 개수, 자원 등)에서 문제가 발생하지 않는다. 하지만, 당시 커져가는 클라우드 환경에서 배포하거나 구동할 애플리케이션 또한 점차 증가하였고 이는 대규모적인 시스템의 필요성이 야기되었다. 증가하는 클라우드 사용량 기업이나 서비스를 제공하는 입장에서 생각할 때 서비스의 개수만큼 서버를 운영한다면 비용적인 측면에 비효율적이며 관리 또한 어렵기에 VM(Virtual Machine)과 같은 다양한 Hypervisor를 통해 가상화를 실현하고 1대의 Host OS로 여러 개의 서비스 운영을 가능하게 하였다. VM이 존재하는데 왜 컨테이너가 등장하였을까? VM과 컨테이너의 차이점을 보면 왜 컨테이너를 사용하는지 명확하게 이해가 된다. 아래 그림을 통해 살펴보자. VM과 컨테이너의 차이(출처 : https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms) VM은 애플리케이션(App A, B, C), 바이너리 및 라이브러리(Bins/Libs) 그리고 Guest OS가 존재하고 아래 Hyervisor로 구성되어 있다. 반면, 컨테이너는 Guest OS가 빠진 애플리케이션과 바이너리 및 라이브러리만으로 구성되어 있는 것을 확인할 수 있다. VM은 환경을 생성할 때마다 Guest OS를 생성하고 Guest OS는 Hyervisor를 통해 가상화를 실현하는데 이는 무겁고 비효율적이라는 단점이 존재한다. 반면, 컨테이너의 경우 새로운 가상 환경(?)을 생성할 때 Guest OS를 생성하는 것이 아니라 OS는 Host OS(Host Operating System)을 공유하고 애플리케잇션과 바이너리 및 라이브러리만 필요하기 때문에 VM보다 가벼우며 효율적이다. 이러한 이유로 컨테이너의 필요성이 증대되고 도커가 등장하였다. 2. Docker 란❓ Docker는 컨테이너 기반의 가상화 플랫폼으로 컨테이너를 관리할 수 있도록 하는 도구로 컨테이너 기반의 (배포하고자 하는) 서비스를 패키징하는 도구로 생각하면 이해가 쉽다. 3. Docker Image와 컨테이너❓ Docker와 같은 도구를 통해 서비스를 운영하고자 할 때 해당 서버 프로그램, 소스코드 및 라이브러리 등 모든 파일과 설정 값을 Docker Image라고 하며 Docker Image를 실행한 상태가 Docker 컨테이너이다. Docker Image와 Container 4. Reference 1. 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 2. https://velog.io/@gkrry2723/%EC%9B%90%EB%A6%AC-%EA%B3%B5%EB%B6%80-Docker%EB%9E%80-%EB%8F%84%EC%BB%A4-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC-%EB%8F%84%EC%BB%A4-%EA%B0%9C%EB%85%90 [원리 공부] Docker란? 도커 동작 원리, 도커 개념 도커는 “app을 packaging 할 수 있는 툴” 이다.컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구라고 할 수 있다.기존의 문제: 서버 p velog.io 3. https://chonchony.tistory.com/m/entry/Docker-%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80 [Docker] 도커란 무엇인가? Docker의 발생 배경 기존 시스템에서는 여러 애플리케이션을 구동하기 위해 다양한 패키지, 환경설정을 통일해야 했고, 이런 과정 속에서 패키지 끼리의 충돌이나 환경변수 충돌과 같은 문제가 chonchony.tistory.com 4. https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms Containers vs Virtual Machines | Atlassian Learn the key differences between containers and virtual machines, as well as popular providers for both. www.atlassian.com 5. https://hoon93.tistory.com/48 도커 컨테이너(Container)와 이미지(Image)란? 도커(Docker)는 Immutable Infrastructure Paradigm 이라는 개념을 기반으로 하기 때문에,서비스 환경(서비스 인프라) 부분을 이미지화(실행파일화)하여 배포한 뒤 가급적 변경하지 않고 사용한다고 이전 포 hoon93.tistory.com

답글 남기기

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