🐳 Docker
Docker
는 컨테이너화된 어플리케이션을 개발하고 배포, 실행시키는 오픈 소스 플랫폼이다.Docker
의 실행 동작은 격리된 환경에서 어플리케이션을 패키징하고 실행하는 기능을 제공하는데, 서버의 OS에 영향을 받지 않고 도커 내부의 별도의 환경에서 구동되기에 Docker
를 사용하게 되면 어떤 인프라 환경에서 분리되어 빠르게 배포하고 구동시킬 수 있게된다.
📝 Docker Architecture
Docker
는 서버-클라이언트 아키텍처를 사용하는데, Docker Client
는 컨테이너를 구축, 실행 및 배포하는 무거운 작업을 수행하는 Docker Daemon
과 통신한다. 도커 클라이언트와 데몬은 동일한 시스템에서 구동될수도 있고 원격으로 연결될 수도 있으며 소켓 또는 Rest API를 통해 통신한다. Docker Compose
로 어플리케이션을 구성하여 컨테이너를 작업할 수도 있다.
🖊️ Docker Daemon
도커 데몬은 Docker API
요청을 수신하고 이미지, 컨테이너, 네트워크와 같은 도커 객체를 관리한다.
🖊️ Docker Client
도커 명령을 보내는 사용자들로 docker run
과 같은 명령을 보내면 dockerd
가 수행한다. docker
명령은 Docker API
를 사용하며 도커 클라이언트는 2개 이상의 데몬과 통신할수 있다.
🖥️ Docker Desktop
Mac
, Windows
, Linux
환경에서 컨테이너화된 어플리케이션을 구축하고 공유할 수 있도록 도와주는 GUI어플리케이션으로 Docker Daemon
, Docker Compose
, Kubernetes
등이 포함되어 있다.
🛠️ Docker Object
Docker
를 사용하게 되면 컨테이너, 이미지, 네트워크, 볼륨, 플러그인 등의 객체들을 사용하게 되는데, 해당 객체들에 대한 내용을 확인해본다.
📦 Container
실행 가능한 이미지 인스턴스를 말하며, 어플리케이션을 실행하거나 생성, 중지, 이동 등을 할 수 있다.
도커 컨테이너는 자체 파일 시스템과 환경을 가지고 있으며 다른 컨테이너로부터 독립적인 환경으로 동작하는데, 각각의 어플리케이션이 서로에게 영향을 주지 않고 독립적으로 실행할 수 있다.
🏞️ Image
도커 이미지는 도커 컨테이너를 생성하기 위한 읽기 전용 템플릿이다. 한마디로 생성하고자 하는 어플리케이션을 뜻한다. Apache Tomcat
이 될 수도 있고 Java
Nginx
등등 어플리케이션을 이미지로 생성하고 사용할 수 있는데, 자신만의 이미지도 생성이 가능해서 사용하고자 하는 어플리케이션의 설정을 미리 처리해둔 상태로 이미지를 생성해서 사용할 수도 있다.
예를 들면, 기본 Tomcat
의 기본포트를 처음부터 80으로 세팅해두어서 매번 배포시마다 굳이 포트부분의 설정을 바꿀필요가 없어진다.
이런 경우에는 Dockerfile
을 통해 이미지를 빌드하고 생성할 수 있다.