- Hypervisor 입장에서 VM 은 하나의 APP 이다
- VM 은 물리 자원에 접근하기 위해 Kernel 을 2 번 거쳐야 한다
- Hypervisor 는 물리 자원 바로 위 Kernel 에 배치되는 Type1 ( Baremetal ) , Host 의 OS 위에 배치되는 Type2 ( Host-Based Hypervisor ) 로 나뉜다
- run 을 통해 container 생성과 시작을 동시에 할 수 있다. 이는 생성 ( create ) 와 시작 ( start ) 를 합친 것이다
- 사용할 이미지인 centos:7 은 local registry 에 위치해야 한다. 이 이미지는 정적 파일이다
- --name 은 지정하지 않아도 자동으로 생성된다
- -t 는 ssh 와 같은 컨테이너와의 연결 통로를 만들어주고, -i 는 물어보고 답하는 대화형 옵션을 부여하는 것이다. 이를 통해 /bin/bash 명령어를 전달한다. 이를 통해 /bin/bash 로 이동하여 shell 을 실행시킨다
- /bin/bash 는 전달할 명령어 이다
- -d 는 백그라운드에서 동작하게 해준다
- 일반적으로 compose 에서의 서비스는 -d 가 가능한 이미지여야 한다
- 예를 들어, 위와 같은 환경을 만들때, 다수의 컨테이너를 한 번에 간편하게 배포할 때는 docker compose 를 사용할 수 있다
- docker-compose.yaml 파일에 version ( docker compose 의 version ) , services ( 하위에 Container 들을 작성 - services 는 Container 들의 묶음 ) , networks , volumes 를 정의해야 한다
이미지는 layer 로 구성된다. 사용자가 이미지에 추가 사항을 더해서 업로드하면, 이미지 전체가 저장되는 것이 아닌 추가된 layer 만 저장된다. 사용자가 이미지 이름만 변경하여 업로드 하면, 이미지 전체가 저장되는 것이 아닌, 이미지에 link 되는 것이다
이미지로 배포된 컨테이너는 read only 부분과 write 가 가능한 부분으로 나뉘어진다. 이미지의 내용은 read only 부분이며, 배포 후 컨테이너에서 수정이 불가능하다. write 부분은 영구적으로 저장이 불가능하다. 이 부분을 영구적으로 저장하려면, 외부 볼륨과 mount 해서 사용 해야 한다
- 블루 그린 배포란 애플리케이션 이전 버전에 있던 트래픽을 이전 버전과 거의 동일한 버전으로 점진적으로 이전하는 애플리케이션 모델로, 이때 두 버전 모두 실행 상태를 유지한다 ( Hot-Standby )
- 이전 버전은 블루이고, 새 버전은 그린이다
- selector 를 통해 외부 사용자가 블루로 접속하게 할지, 그린으로 접속하게 할지 설정할 수 있다
registry 에는 public / private / local 이 존재한다
local
myweb:1.0 ( [repository name]:[tag] )
public
gildong/myweb1.0 ( push 할 때 인증 정보 확인 - docker login )
private
10.10.10.10:5000/myweb:1.0 ( push 할 때 인증 정보 확인 - docker login https://10.10.10.10 )