docker 컨테이너를 실행하면 어떻게 동작할까요?
도커는 프로세스 격리를 위한 것이므로 프로세스가 어떻게 구성되는지 알아야 합니다.
하나의 도커 컨테이너는 메인 프로세스와 그 외의 프로세스로 구성됩니다. 즉, 메인 프로세스가 하나의 컨테이너를 대표하며 메인 프로세스를 기준으로 컨테이너의 상태가 판별됩니다.
간단히 테스트하기 위해 ubuntu 이미지를 실행 해보겠습니다. docker run -it ubuntu 를 실행하면 /bin/bash 가 메인 프로세스(PID 1)로 실행됩니다. 실행된 터미널에서 ps aux를 실행해보면 다음과 같이 PID 1이 /bin/bash로 나오는 것을 확인할 수 있습니다.

exit로 종료한 후 docker ps 를 실행하면 실행 중인 컨테이너가 없는 것을 확인할 수 있습니다.
그럼 다음으로 docker run -it ubuntu 로 실행해서 다시 컨테이너를 띄웁니다. docker ps로 컨테이너 id를 확인한 뒤 다른 쉘을 켜서 docker exec -it <container-id> bash 로 실행합니다. 방금 실행한 bash 에서 ps aux를 실행해보면 다음처럼 PID가 1인 /bin/bash와 PID 9인 bash가 있는 것을 확인할 수 있습니다.

exit 명령어로 bash로 접속한 프로세스를 종료합니다.
그다음 docker ps 로 컨테이너 상태를 조회해보면 컨테이너가 아직 실행 중임을 알 수 있습니다.

메인 프로세스에 해당되는 shell에서 exit을 한 뒤 docker ps를 해보면 컨테이너가 종료된 것을 확인할 수 있습니다.

이상으로 도커의 컨테이너에서 프로세스의 메인 프로세스가 무엇인지, 생각한대로 동작하는 것은 맞는지 확인 해보았습니다.
'개발' 카테고리의 다른 글
| vscode에서 파이썬 프로그램을 디버깅 하는 방법 (0) | 2026.08.16 |
|---|---|
| 터미널에서 ctrl+c를 눌렀을 때 어떻게 동작할까? (0) | 2026.08.09 |
| python 배열 slicing(item[2:])의 성능은 왜 O(n)일까 (0) | 2026.07.26 |
| 오픈소스에 기여하기(스프링 프레임워크) (0) | 2026.01.15 |
| %EA%B0%80 와 같은 문자들은 도대체 무엇일까 (0) | 2025.12.24 |