[Docker] [도커 기본 개념] Dockerfile, Dockerhub, container, image , Docker Demon
Dockerfile
- 서버 운영 기록을 코드화한 것
Docker image
- 운영 기록을 실행한 시점(도커 파일 + 실행 시점)
Dockerhub
- 도커 허브는 도커에서 제공하는 기본 이미지 저장소
- ubuntu, centos, debian 등의 베이스 이미지와 python, java 등의 공식 이미지 등을 제공.
Docker Container
- 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 운영체제 라이브러리 및 종속 항목과 결합하는 실행 가능한 표준 컴포넌트
- 호스트 컴퓨터에서 돌아가고 있는 하나의 Application 프로세스
- 호스트 컴퓨터와 그 위에서 돌아가는 다른 프로세스들과 격리되도록 설계 됨. (효율성과 보안성) - cpu , memory, network 등
- 격리된 환경에서 개발 환경의 통일성을 갖추기 위해 사용
- 다양한 서버에서 버전 통일성을 갖추기 위해 코드와 환경 모두 하나의 컨테이너로 묶는 역할

Docker Image
- 컨테이너 실행에 필요한 파일과 설정 값들을 포함하고 있는 것
- 애플리케이션 코드와 애플리케이션 실행에 필요한 최소한의 환경(언어 런타임, 라이브러리 패키지 등)을 포함하고 있는 바이너리 파일
- 하나의 이미지로 동일한 Container 를 계속 만들어낼 수 있고, Docker Hub 와 같은 네트워크 상의 Doker registry 를 통해 손쉽게 공유 가능
- uuid로 저장
- 여러개의 레이어로 구성될 수 있음
- image들의 조합이 하나의 container image가 됨.
- Image 종류
- Interactive (결합)
- 이미 존재하고 있는 도커 이미지를 활용해 컨테이너를 실행
- 그 환경 위에 다가 새로운 것을 추가하고 이를 새로운 이미지로 바꾸는 것
- Dockerfile
- Dockerfile이라는 새로운 형태의 텍스트 파일을 작성함으로써 Docker Image를 만드는 것
- Interactive (결합)

Container vs Image
- Image는 container의 스냅샷(snapshot)을 떠놓은 것
- 반대로 container는 컴퓨터에서 살아서 돌아가고 있는 image의 한 인스턴스(instance)

=> Docker Host : dockerd가 동작중
=> Docker Host(disk)에 Container images (file) 로 저장되어 있음(read-only)
=> Container images file 이 실행되면 dockerd 메모리위에 process running 됨, 이것을 container 라고 함.(read,write)
Docker Demon
- API 요청을 수신하고 이미지 ,컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리

Docker HOST(Linux Kernel)
- dockerd(docker demon)이 동작되고 있는 리눅스 커널이 있는 시스템
- 도커가 컨테이너를 실행할 수 있는 플랫폼을 만들어 놓은 것.
- dockerd 위에 컨테이너가 동작
- host 입장에서 container 는 하나의 동작되는 process
- container 끼리는 각각 isolate 됨.
학습영상 : https://www.youtube.com/watch?v=m454YTyPWSk&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=9