DockerOverview

Docker Overview

What can I use Docker for?

  • CI/CD WorkFlows
  1. 개발한 코드를 도커 컨테이너와 함께 공유한다.
  2. Docker 를 사용하여 애플리케이션을 테스트 환경으로 푸시하고 자동화 및 수동 테스트를 실행함.
  3. 버그를 발견하면 개발 환경에서 고치고 다시 테스팅과 검증을 위해 제배포 할 수 있다.
  4. 테스트 까지 완료되면, 고객에게 전달하는것은 단지 production 환경으로 이미지를 push 해서 업데이트 하면 끝인 간단한 작업이다.

Docker architecture

  • Docker daemon (dockerd):

Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리한다. 다른 daemon 과 통신할 수 도 있다.

  • The Docker client (docker):

docker run 과 같은 명령어를 실행하면 Docker client는 dockerd 로 명령을 옮긴다. Docker client는 둘이상의 docker daemon과 통신할 수 있다.

  • Docker Desktop :

Window와 Mac 에서 도커 애플리케이션을 공유할수 있게 해준다. dockerd , docker , Docker Compose, Docker Content Trust.. 같은것을 포함한다.

  • Docker registries :

Docker hub 와 같이 이미지들을 모아 둔 곳,

Docker Object

docker images, containers, networks, volumes, plugins.. 등등 다양한 오브젝트가 있다. 간단하게 몇게만 살펴본다.

  • images :

컨테이너를 생성 지침이 포함된 읽기 전용 템플릿이다. 이미지를 이용해서 커스텀한 이미지를 만들 수도 있다. Dockerfile 을 만들어서 image를 생성하고 실행하는 스텝을 정의할 수도 있다. Dockerfile의 각 지침은 image layer를 만든다.

  • Containers :

컨테이너는 이미지에 실행가능한 인스턴스이다. 기본적으로 각 컨테이너와 host는 잘 격리 되어 있고, 얼마나 격리 될지 정할 수 도 있다. 만들때 설정한 설정과 이미지들로 컨테이너가 정의 된다.