본문 바로가기
클라우드(Cloud)/도커(Docker)

[Docker] 도커 컨테이너의 shell로 들어가는 방법

by virusuk 2023. 3. 22.
반응형

도커(Docker)는 컨테이너 내에 애플리케이션을 실행할 수 있는 플랫폼입니다.

 

애플리케이션을 컨테이너에서 실행하면 컨테이너 내부에 들어가서 일부 작업을 수행할 수 있습니다.

예) 파일 또는 디렉토리를 수정하거나 새 패키지를 설치하거나 로그를 분석하여 문제를 해결하는 경우입니다.

 

어떻게 컨테이너에 진입해야 할까요?

일반적인 해결책 중 하나는 컨테이너의 shell을 열고 들어가는 것입니다.

 

shell은 컨테이너와 상호 작용할 수 있는 CLI(command line interface) 유틸리티입니다.

이는 컨테이너에 창을 여는 것과 비슷하므로 내부에서 진행되는 작업을 확인하고 필요에 따라 수정할 수 있습니다.

 

이제 docker exec 명령을 사용하여 컨테이너의 shell에 엑세스하는 방법을 살펴보겠습니다.

컨테이너의 shell에 엑세스하기 위해 "docker exec" 구문은 다음과 같습니다.

docker exec -it <container_name or id> /bin/bash

Docker 옵션(필드)에 대한 설명은 다음과 같습니다.

  • docker exec : 컨테이너 내에서 명령을 실행하도록 Docker에 지시합니다.
  • -it : 플래그(-i 또는 -t)는 컨테이너에 연결되는 TTY(-t 터미널)가 있는 대화식(-i) 세션에서 실행되어야 하는 명령어를 지정합니다.
  • <Container_name or ID> : 명령을 실행할 컨테이너의 이름 또는 ID 입니다.
  • <shell-executable> : 컨테이너 내에서 대화형 세션을 시작하는데 사용할 shell 실행 파일의 이름입니다.
    • 예) Bash shell을 사용하여 대화형 세션을 시작하도록 bash를 지정할 수 있습니다. 
    • <shell-executable> == /bin/bash 입니다.

 

Docker Exec를 사용하여 컨테이너의 shell로 엑세스

Step 1: 컨테이너 시작

- Nginx 컨테이너를 시작합니다.

- 이 명령어는 최신 버전의 nginx 이미지에서 -d 로 새 컨테이너를 시작하고 이름을 "mynginx"로 지정하였습니다.

docker run -d --name mynginx nginx:latest

참고: "-d" 플래그는 백그라운드로 실행하는 것입니다.

 

Step 2: 컨테이너 상태 확인

- 컨테이너 상태를 확인하고 제대로 실행되고 있는지 확인하기 위해 다음과 같이 명령을 실행합니다.

- 해당 명령어는 시스템에서 실행 중인 모든 컨테이너를 나열하고, CONTAINER ID, IMAGE, COMMAND 등과 같은 세부 정보와 함께 목록에 "mynginx" 컨테이너가 표시되어야 합니다.

docker ps

 

Step 3: 컨테이너의 shell에 엑세스

- "docker exec"를 사용하여 컨테이너의 shell에 엑세스하려면 다음과 같이 명령을 실행합니다.

docker exec -it mynginx /bin/bash

Step 4: shell을 사용하여 명령어를 실행

- 이제 컨테이너 shell 내에서 테스트하려는 모든 명령어를 실행할 수 있습니다.

- 아래의 명령어를 실행하면 "/usr/share/nginx/html" 디렉토리의 내용을 출력할 수 있습니다.

ls /usr/share/nginx/html

 

  • ".html" 파일이 표시됩니다.

- 컨테이너 shell 내에서 nginx 웹 서버를 테스트를 위해 다음과 같이 명령어를 실행해보겠습니다.

curl http://localhost
  • 결과는 nginx 웹 서버에 요청을 보내고 터미널에 응답을 표시합니다.
  • 웹 서버가 제대로 작동하는 경우 기본 "Welcome to nginx!"가 웹 페이지에 표시되어야 합니다.

Step 5: 컨테이너 shell 종료

- 컨테이너의 shell을 종료하려면 다음과 같이 입력할 수 있습니다.

- 그러면 PC에서 실행 중인 터미널로 돌아갑니다.

exit or Ctrl+D

 

 

결론

본 게시물에서 "docker exec" 명령을 사용하여 컨테이너의 shell에 엑세스하고 내부에서 명령어를 실행하는 방법을 살펴보았습니다.!

반응형