첫 번째는 컨테이너 내부의 애플리케이션이 실행 중이어야 컨테이너의 상태도 실행 중이 된다는 점이다. 애플리케이션 프로세스가 종료되면 컨테이너의 상태도 Existed가 된다. 종료된 컨테이너는 CPU 자원이나 메모리를 사용하지 않는다. 앞서 살펴본 ‘Hello World’ 컨테이너도 스크립트 실행이 끝나자마자 종료됐다. 대화식 컨테이너도 터미널 세션을 종료하는 시점에 종료된다.
두 번째는 컨테이너가 종료돼도 컨테이너는 사라지지 않는다는 점이다. 종료된 컨테이너는 사라지지 않고 그대로 남아 있다. 그러므로 나중에 컨테이너를 다시 실행하거나, 로그를 확인하거나, 컨테이너의 파일 시스템에 새로운 파일을 복사하거나 외부로 복사해 올 수 있다. docker container ls 명령으로는 실행 중인 컨테이너의 목록만 볼 수 있지만, 종료된 컨테이너도 명시적으로 삭제하지 않는 한 그대로 남아 있다. 또한, 컨테이너의 파일 시스템이 그대로 남아 있으므로 호스트 컴퓨터의 디스크 공간을 계속 점유한다.
그럼 컨테이너를 실행하고 백그라운드에서 계속 동작하게 하려면 어떻게 하면 될까? 도커를 사용하는 주목적은 웹 사이트, 배치 프로세스, 데이터베이스 같은 서버 애플리케이션을 실행하는 것이므로 이러한 형태가 주된 사용 형태일 것이다.
실습 컨테이너에서 간단한 웹 사이트를 호스팅하자.
docker container run --detach --publish 8088:80 diamol/ch02-hello-diamol-web