Docker

곽태민·2023년 3월 24일
0

Docker


💡 **가상 머신처럼 독립된 실행환경을 만들어 주는 것**을 말한다. 운영체제를 설치하는 것과 유사하지만 실제로 설치하는 것은 아니기 때문에 설치 용량이 작고, 속도가 빠르다.

❓ Docker를 왜 사용할까?

구성 단순화

  • Docker는 하나의 Configuration으로 모든 플랫폼에서 실행할 수 있다.
  • Configuration 파일을 코드에 넣고 환경 변수를 전달해서 다른 환경에 맞출 수 있다.
  • 따라서 하나의 Docker Image를 다른 환경에서 사용할 수 있다.

코드 관리

  • Docker는 일관된 환경을 제공하여 개발 및 코딩을 훨씬 편안하게 만들어준다.
  • Docker Image는 변경이 불가하기에 개발환경에서 운영 환경까지 애플리케이션 환경이 변경되지 않는 이점이 존재한다.

개발 생산성 향상

  • 개발 환경을 운영 환경에 최대한 가깝게 복제할 수 있다.
  • Docker를 사용하면 코드가 운영 환경의 컨테이너에서 실행될 수 있다.
  • 가상 머신과는 달리 Shared Volume을 사용해서 호스트에서 컨테이너의 어플리케이션 코드를 사용할 수 있도록 할 수 있다.
  • 이를 통해서 개발자는 소스 코드를 편집할 수 있고 편집된 코드는 Docker내에 실행 중인 환경에 반영된다.

애플리케이션 격리

  • Web Server (e.g. Apache, Nginx)와 연결된 API 서버를 격리를 해야할 때 다른 Container에서 API서버를 실행할 수 있다.

빠른 배포

  • Container OS를 부팅하지 않은 상태에서 어플리케이션을 실행하기 때문에 Docker Container를 매우 빠르게 만들 수 있다.

🤔 Container와 Virtual Machine 비교

  • Container : Linux, Window, Mac과 같이 Host OS 기반의 Docker 운영
    • Container별로 각각 Process 단위로 bin/lbs가 구동.
  • Virtual Machine : Hypervisor위에 Full Host OS가 올라가고 이를 기반으로 bin/lbs가 구동된다.
    • Virtual Machine은 Full OS를 구동하기 때문에 OverHead가 높다.

ContainerVirtual Machine의 큰 차이점은 Host OS 설치 여부에 있다.

출처: https://docs.docker.com/get-started/overview/


🧐 Image와 Container의 개념

DockerClient(docker)Server(dockerd)로 구성되어 있다. DockerImageread onlyDocker Container를 생성하기 위한 template이고, ContainerImages가 실제 메모리에 Loading된 Instance다.

  • Images : libs와 package의 template, read only
  • Container : Images가 설치되어 메모리에 Loading된 Instance
profile
Node.js 백엔드 개발자입니다!

0개의 댓글