What happens in 'docker container run' ?
아주 잘못된 misconception 중 하나가
'도커는 그냥 컨테이너를 구동(run)시키는 거지'라는 말이다.
실제 background에서는 아래와 같은 일들이 벌어진다.
로컬에서 도커 이미지 캐시(cache)가 있는지 탐색한다.
" 이전 포스트에서 nginx를 run 했을때,
우선 해당 웹 서버 이미지를 로컬에서 검색하는 과정이 벌어졌다."
없다면, 도커허브(default)라는 remote image repository에서
해당 이미지를 검색한다.
(도커 이미지의 버전을 명시하지 않는 한) 최신 도커 이미지를 다운받는다.
다운받은 도커 이미지를 기반으로 새로운 컨테이너를 생성한다.
여기서 중요한 점은 컨테이너가 copy되는 것이 아니라는 점이다.
클래스를 선언하고 객체를 생성하는 것처럼,
컨테이너는 매번 새롭게 생성된다.
도커 엔진의 private 네트워크에 가상 IP를 부여한다.
(원문 : Gives it a virtual IP on a private network inside docker engine.)
--pulish 및 8080:80 명령어를 추가했기 때문에,
8080포트는 host에게,
80번 포트는 컨테이너에 라우팅한다.
(만약, --publish 명령어가 없다면, 어떠한 포트도 오픈하지 않을 것이다.)
컨테이너를 시작한다.(start)
(Dockerfile의 CMD 명령어들을 통해)