SU Library

[Docker초보]Docker 컨테이너에 대한 개념 설명과 간단한 명령어 소개 본문

DevOps/Docker

[Docker초보]Docker 컨테이너에 대한 개념 설명과 간단한 명령어 소개

S U 2024. 5. 13. 15:54

도커 컨테이너

 

도커의 컨테이너는 하나의 프로세스로 가상환경 파일시스템(도커 이미지의  메타데이터로 구성됨)을 기반으로 실행됩니다. 즉, 컨테이너는 특정환경을 구성하기 위한 정보를 가진 도커 이미지를 기반으로 실행된느 파일시스템 내에서 실행되는 프로세스로 다음과 같은 4개의 생애주기를 따릅니다.

 

컨테이너 생애주기

  • 생성 - docker run
  • 시작 - docker run
  • 종료 - docker kill, stop
  • 삭제 - docke rm [-f]

그렇다면, 도커 컨테이너는 어떻게 실행이 되는 것일까요? 아래 명령어를 rockylinux:9.2버전의 셸로 진입합니다. 

docker run -it --rm rockylinux:9 bash

추가되는 옵션으로 "-it"와 "--rm" 옵션이 추가되는 것을 확인할 수 있습니다.

먼저 "-"는 짧은 옵션을 지정할 때, "--"는 긴 옵션을 지정할 때 사용됩니다. 그리고

  • "-i" 옵션은 interactive 모드로 실행되도록 합니다. 이 모드에서는 컨테이너와 상호작용이 가능하며, 사용자의 입력을 받을 수 있습니다.
  • "-t" 옵션은 유사 터미널(가상의 터미널)을 할당하도록 합니다. 이를 통해 컨테이너 내부에서 터미널 환경을 사용할 수 있게 되며, 쉘로의 입력과 출력을 처리할 수 있습니다.
  • "--rm" 옵션은 컨테이너가 종료되면 해당 컨테이너를 자동으로 삭제하는 옵션입니다. (프로세스 종료시 컴퓨터의 메모리에서 컨테이너 정보를 삭제하는 작업)

이를 실행하면

컨테이너 내부

컨테이너 ID가 생성되고, 즉시 컨테이너 환경 내부로 진입한 것을 알 수 있습니다. 명령어 뒤에 붙어있는 rockylinux:9는 무엇을 의미하는 걸까요?

 

다들 예상하셨겠지만, 이는 바로 이미지 이름입니다. 즉 docker run 명령어는 다음과 같은 형식을 따름을 알 수 있습니다.

docker run (<OPTIONS>) <IMAGENAME> (<COMMAND>)

 

*  ()안의 내용은 생략가능한 옵셔널 값입니다.

 

또한, 한가지 눈여겨 봐야할 것이 있습니다. 처음 run 명령어를 실행하면, Unable to find image라는 문구를 볼 수 있습니다. 즉, Docker는 로컬에 지정한 이미지가 있는지 확인한 다음, 없으면 Docker Hub라는 외부 이미지 저장소에서 이미지를 다운로드 받습니다. 이를 이미지를 pull받는다라고 표현합니다. 그 후 bash가 실행되는 원리입니다.

 

그렇다면, 실행되는 컨테이너는 어떻게 알아볼까요?

 

docker ps

의 명령어를 통해 실행되는 도커 컨테이너들을 확인할 수 있습니다.

docker ps의 결과

 

 

이제 도커 컨테이너를 종료하는 방법에 대해 알아보겠습니다. 

docker stop a274b8001e27
docker kill a274b8001e27

kill과 stop으로 두가지 명령어가 있는데, kill의 경우 강제종료를 시행합니다. 

 

이는 rm의 옵션과 달리 작업중이던 컨테이너의 마지막 상태는 유지가 되는 상태입니다. 

반대로  stop된 컨테이너 실행을 원할시 start 명령어를 시행하면 됩니다. 

docker start a274b8001e27

그러나 프로세스적으로 실행만시키고 run -it같이 인터렉션을 할수는 없는데, 이때

docker exec -it a274b8001e27 /bin/bash

를 통해 bash로 접속해서 컨테이너를 조작할 수 있습니다.

 

Comments