도커 이미지
특정 시점에 특정 서버를 실행할 수 있는 상태를 저장한 압축 파일
즉, 이미지 안에 프로그램 실행에 필요한 OS, 구성요소, 프로그램이 포함되어 있다.
이미지와 컨테이너
이미지는 프로그램, 컨테이너는 프로세스로 생각하면 편하다.
이미지 상태에서는 디스크의 공간만 사용하며, 컨테이너는 실행상태의 이미지로써 CPU와 Memory같은 리소스를 사용한다.
한 이미지를 여러개 실행하여 여러개의 컨테이너를 생성할 수 있지만, 각 컨테이너는 모두 격리되어 있다.
이미지 메타데이터
이미지는 이미지파일과 이미지의 메타데이터로 구성되어있다.
Env에는 SW가 실행시 사용되는 정보(애플리케이션의 환경설정값)가 존재하며
Cmd는 컨테이너 실행시 프로세스 실행 명령어가 지정되어 있다.
이미지를 실행하여 컨테이너를 생성할 때, 컨테이너의 메타데이터에 존재하는 env와 cmd를 설정한 값으로 덮어쓸 수 있으며, 따로 설정하지 않으면 Default는 이미지의 값과 동일하게 설정된다.
컨테이너의 LifeCycle
1. Created
컨테이너를 실행하기 위한 격리공간이 만들어지는 단계
하지만 아직 내부에서 프로세스를 실행하지 않기 때문에 호스트OS의 리소스를 사용하지 않는다.2. Running
컨테이너 내에서 프로세스가 실행중인 상태
호스트 OS의 CPU와 메모리를 사용한다.
즉, docker run 명령은 create명령과 start명령을 합쳐놓은 명령어이다.3. Paused
컨테이너에서 실행중인 모든 프로세스가 일시정지된 상태.
즉, CPU는 사용하지 않고 메모리만 사용하며 현재 상태를 저장해둔 상태4. Stopped(Exited)
실행중인 프로세스를 완전히 중단시켜 호스트OS의 메모리와 CPU의 사용이 중지되며, start시 프로세스가 처음부터 다시 시작한다.