DockerOverview
Docker Overview
What can I use Docker for?
- CI/CD WorkFlows
- 개발한 코드를 도커 컨테이너와 함께 공유한다.
- Docker 를 사용하여 애플리케이션을 테스트 환경으로 푸시하고 자동화 및 수동 테스트를 실행함.
- 버그를 발견하면 개발 환경에서 고치고 다시 테스팅과 검증을 위해 제배포 할 수 있다.
- 테스트 까지 완료되면, 고객에게 전달하는것은 단지 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는 잘 격리 되어 있고, 얼마나 격리 될지 정할 수 도 있다. 만들때 설정한 설정과 이미지들로 컨테이너가 정의 된다.