Docker Exec 사용법 완벽 가이드! 실행 중인 컨테이너에서 명령 실행하기

Docker를 운영하다 보면 이미 실행 중인 컨테이너 내부에서 명령을 실행해야 하는 경우가 자주 있습니다. 예를 들어 로그 파일을 확인하거나 설정 파일을 수정하고, 네트워크 연결 상태를 점검하거나 애플리케이션이 정상적으로 동작하는지 확인해야 할 수 있습니다.

이럴 때 사용하는 명령어가 바로 docker exec입니다.

Docker Exec는 실행 중인 컨테이너 내부에서 새로운 프로세스를 실행하는 명령어입니다. 컨테이너를 재시작할 필요 없이 원하는 명령을 즉시 실행할 수 있기 때문에 Docker를 사용하는 개발자와 서버 관리자라면 반드시 익혀야 하는 필수 명령어입니다.

이번 글에서는 Docker Exec의 개념부터 기본 사용법, 주요 옵션, Bash 접속 방법, 실무 활용 사례까지 자세히 알아보겠습니다.

Docker Exec란 무엇인가?

Docker Exec는 실행 중인 컨테이너 안에서 새로운 명령이나 프로그램을 실행하는 기능입니다.

기존 메인 프로세스에는 영향을 주지 않으며, 별도의 프로세스를 생성하여 원하는 작업만 수행합니다.

Docker Attach가 현재 실행 중인 프로세스에 연결하는 기능이라면 Docker Exec는 새로운 작업을 실행하는 기능이라고 이해하면 됩니다.

Docker Exec는 언제 사용하는가?

다음과 같은 상황에서 자주 사용됩니다.

  • 컨테이너 내부 접속
  • Bash Shell 실행
  • 로그 파일 확인
  • 설정 파일 수정
  • 네트워크 점검
  • 패키지 설치
  • 프로세스 확인
  • 디버깅 작업

운영 서버에서도 가장 많이 사용하는 Docker 명령어 중 하나입니다.

Docker Exec 기본 사용법

기본 명령어는 다음과 같습니다.

docker exec <컨테이너명> <명령어>

예를 들어 현재 시간을 확인하려면 다음과 같이 실행합니다.

docker exec nginx date

출력 예시입니다.

Tue Jul 22 13:25:16 UTC 2026

컨테이너 내부에서 실행된 결과가 그대로 출력됩니다.

Bash Shell 접속

가장 많이 사용하는 방식입니다.

docker exec -it nginx bash

Bash가 없는 이미지에서는 다음과 같이 sh를 사용합니다.

docker exec -it alpine sh

이후에는 일반 Linux 서버처럼 명령어를 사용할 수 있습니다.

-it 옵션이란?

-it는 두 개의 옵션을 함께 사용하는 형태입니다.

  • -i : 표준 입력 유지
  • -t : 터미널(TTY) 생성

대부분의 Shell 접속에서는 항상 함께 사용합니다.

docker exec -it ubuntu bash

특정 디렉터리 확인

컨테이너 내부의 파일을 확인할 수도 있습니다.

docker exec nginx ls -al /etc/nginx

설정 파일과 디렉터리 구조를 바로 확인할 수 있습니다.

프로세스 확인

현재 실행 중인 프로세스를 확인하는 예제입니다.

docker exec nginx ps -ef

컨테이너 내부에서 실행 중인 프로세스 목록이 출력됩니다.

서비스가 정상적으로 실행 중인지 확인할 때 자주 사용합니다.

환경 변수 확인

현재 설정된 환경 변수도 확인할 수 있습니다.

docker exec nginx env

환경 변수 설정 오류를 확인할 때 매우 유용합니다.

Docker Exec 실무 활용 예제

Docker Exec는 운영 서버에서 가장 많이 사용하는 Docker 명령어 중 하나입니다. 컨테이너를 중지하지 않고 내부 상태를 확인하거나 문제를 해결할 수 있기 때문에 장애 대응에서도 매우 중요한 역할을 합니다.

컨테이너 내부 접속

가장 많이 사용하는 예제입니다.

docker exec -it nginx bash

Bash가 없는 이미지라면 다음과 같이 실행합니다.

docker exec -it alpine sh

컨테이너 내부에서 일반 Linux 명령어를 자유롭게 사용할 수 있습니다.

설정 파일 확인

Nginx 설정 파일을 확인하는 예제입니다.

docker exec nginx cat /etc/nginx/nginx.conf

현재 적용된 설정을 빠르게 확인할 수 있습니다.

디스크 사용량 확인

컨테이너 내부의 저장 공간을 확인합니다.

docker exec nginx df -h

디스크 부족 문제를 점검할 때 자주 사용하는 명령입니다.

프로세스 확인

현재 실행 중인 프로세스를 확인합니다.

docker exec nginx ps -ef

애플리케이션이 정상적으로 실행 중인지 확인할 수 있습니다.

네트워크 연결 확인

컨테이너에서 외부 서버와 통신이 가능한지 테스트합니다.

docker exec nginx ping google.com

또는 HTTP 연결을 확인할 수도 있습니다.

docker exec nginx curl https://example.com

네트워크 장애를 분석할 때 매우 유용합니다.

파일 복사 없이 내용 확인

로그 파일도 바로 확인할 수 있습니다.

docker exec nginx tail -f /var/log/nginx/access.log

실시간 접속 로그를 확인하면서 서비스 상태를 점검할 수 있습니다.

Linux 서버 문제 해결

운영 중인 웹 서비스에서 500 Internal Server Error가 발생했습니다.

컨테이너는 정상적으로 실행 중이었기 때문에 내부 상태를 확인해야 했습니다.

먼저 컨테이너에 접속했습니다.

docker exec -it web-server bash

애플리케이션 로그를 확인했습니다.

cat /app/logs/error.log

로그를 확인한 결과 환경 변수 설정 오류가 발생하고 있었습니다.

환경 변수도 함께 확인했습니다.

env

필수 환경 변수가 누락된 것을 확인한 후 설정을 수정하여 컨테이너를 다시 배포했습니다.

서비스는 정상적으로 복구되었습니다.

Docker Exec는 컨테이너를 재시작하지 않고도 내부 상태를 확인할 수 있기 때문에 운영 환경에서 가장 많이 사용하는 명령어 중 하나입니다.

Docker Exec 사용 시 주의사항

Docker Exec를 사용할 때는 다음 사항을 알아두는 것이 좋습니다.

첫 번째는 실행 중인 컨테이너에서만 사용할 수 있다는 점입니다.

중지된 컨테이너에서는 명령을 실행할 수 없습니다.

두 번째는 Exec로 실행한 프로세스는 메인 프로세스와 별도로 동작합니다.

Exec에서 실행한 명령이 종료되어도 컨테이너는 계속 실행됩니다.

세 번째는 운영 서버에서 불필요한 패키지 설치나 파일 수정은 지양하는 것이 좋습니다.

변경 사항은 이미지에 반영하여 다시 배포하는 것이 권장됩니다.

네 번째는 Bash가 없는 경량 이미지도 많습니다.

Alpine Linux와 같은 이미지에서는 bash 대신 sh를 사용해야 합니다.

Best Practice

Docker Exec를 사용할 때는 다음과 같은 방법을 추천합니다.

  • 컨테이너 점검은 Docker Exec를 우선 사용합니다.
  • Bash가 없으면 sh를 사용합니다.
  • 운영 환경에서는 설정 변경보다 원인 분석에 활용합니다.
  • 로그 확인과 환경 변수 점검을 함께 수행합니다.
  • 디버깅이 끝나면 변경 사항은 이미지에 반영하여 재배포합니다.
  • Docker Logs와 Docker Inspect를 함께 활용하면 문제를 더욱 빠르게 해결할 수 있습니다.

이러한 방법을 적용하면 컨테이너 운영의 안정성과 효율성을 높일 수 있습니다.

자주 묻는 질문

Docker Exec와 Docker Attach의 차이는 무엇인가요?

Docker Exec는 새로운 프로세스를 실행합니다.

Docker Attach는 현재 실행 중인 메인 프로세스에 연결합니다.

실무에서는 Docker Exec를 사용하는 경우가 훨씬 많습니다.

Docker Exec로 여러 명령을 실행할 수 있나요?

가능합니다.

예를 들어 다음과 같이 Bash를 이용하면 여러 명령을 한 번에 실행할 수 있습니다.

docker exec nginx bash -c "pwd && ls -al"

Docker Exec를 사용하면 컨테이너가 재시작되나요?

아닙니다.

새로운 프로세스만 실행될 뿐 메인 프로세스에는 영향을 주지 않습니다.

Bash가 없다는 오류가 발생합니다.

경량 이미지에서는 Bash가 포함되지 않은 경우가 많습니다.

다음과 같이 sh를 사용하면 됩니다.

docker exec -it alpine sh

마무리

Docker Exec는 실행 중인 컨테이너 내부에서 새로운 명령을 실행할 수 있는 가장 중요한 Docker 관리 명령어입니다.

로그 확인, 설정 파일 점검, 환경 변수 확인, 네트워크 테스트, 디버깅 등 거의 모든 운영 작업에서 활용되며, 컨테이너를 중지하지 않고도 내부 상태를 점검할 수 있다는 큰 장점이 있습니다.

Docker를 실무에서 운영한다면 Docker Exec는 반드시 숙지해야 하는 필수 명령어이며, Docker Logs, Docker Inspect와 함께 사용하면 대부분의 장애를 빠르게 분석하고 해결할 수 있습니다.

댓글 남기기