Docker를 시작하기 전

DevChoi·2024년 2월 28일
post-thumbnail

[Docker의 배경]

Docker는 dotCloud기업의 내부 프로젝트로 솔로몬 하익스(Solomon Hykes)과 그의 팀에서 시작되어 2013년 오픈소스로 출시되었다.
당시에 클라우드 환경에서 애플리케이션을 배포하하는 일에 어려움이 있고, 관리하는 서버가 많아질수록 서버 관리에도 많은 리소스를 필요로 했다고 한다. 그리고 가상화 기술을 사용하더라도 많은 리소스를 필요로 하기에 이 문제들을 해결하기 위해서 기존 방식의 가상화 방식 OS를 전체를 가상화하는 대신 애플리케이션과 해당 종속성을 묶어 가상화하는 컨테이너로 LXC(LinuX Containers) 기반으로 개발하게 되었다고 한다.

출처 : https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms

위에 그림처럼 Host OS에 여러개의 Guest OS가 올라갈 경우 Host의 cpu, memory등 물리적 리소스를 할당하기에 구성환경 자체가 무거워져 성능저하의 단점이 발생한다.
하지만 컨테이너의 경우 container Engine (docker 이외에도 LXD, LXC, OpenVZ)에 OS를 제외한 경량화된 컨테이너를 올려 필요한 만큼의 리소스를 할당하여 성능저하의 단점을 해결하고, 여러개의 프로그램을 설치해도 독립된 컨테이너이기 때문에 충돌로 인한 문제도 해결된다. 그리고 다른 서버로 옮기더라도 컨테이너의 환경이 유지되고, 일관성있는 환경을 사용할 수 있다.

[Docker,Docker Image, Container, Docker Hub]

Docker

  • 컨테이너를 사용자가 쉽게 생성, 테스트, 배포할 수 있게 도와주는 소프트웨어 플랫폼

Docker Image

  • application, Bins, Libs 등 개발환경을 묶어 빌드하여 하나의 File을 생성한 것

Container

  • docker를 사용하여 docker image를 실행시켜 File에 묶여있는 개발환경으로 컨테이너 서버가 실행 됨

Docker Hub

  • 본인의 Repository를 생성하여 로컬환경에서 생성한 docker image를 push하여 관리할 수 있는 저장소이며, 다른 유저들과 docker image를 공유할 수 있다.
    https://hub.docker.com/ 를 확인

0개의 댓글