Cloud Computing & MSA

Docker container 내부 shell 연결

sstdio.h·2018년 6월 28일·조회 5,575

1. 개요

실행 중인 Docker 컨테이너 내부로 접속해 파일을 확인하거나 명령을 실행하는 방법이다. 예시에서는 tomcat:8 컨테이너에 docker exec 명령으로 접속한다.


2. 방법

2-1. 컨테이너 ID 확인

먼저 docker ps로 현재 실행 중인 컨테이너 목록을 확인한다.

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
f537532e716c        tomcat:8            "catalina.sh run"   11 minutes ago      Up 11 minutes       0.0.0.0:8080->8080/tcp   reverent_darwin

위 결과에서 컨테이너 ID는 f537532e716c이다. 전체 ID를 모두 입력하지 않아도, 다른 컨테이너와 구분될 만큼의 앞부분만 입력해도 된다.

2-2. 컨테이너 내부로 접속

docker exec -it 명령을 사용해 실행 중인 컨테이너 안에서 셸을 실행한다.

# docker exec -it f537532e716c /bin/bash
root@f537532e716c:/usr/local/tomcat#

프롬프트가 root@f537532e716c:/usr/local/tomcat#처럼 바뀌면 컨테이너 내부로 정상 접속된 것이다. 이미지에 따라 /bin/bash가 없을 수 있으며, 이 경우에는 /bin/sh를 사용할 수 있다.

2-3. 접속 확인

컨테이너 내부에서 ls -l을 실행해 현재 디렉터리의 파일 목록을 확인한다.

root@f537532e716c:/usr/local/tomcat# ls -l
total 120
-rw-r----- 1 root root  57092 Apr 27 20:26 LICENSE
-rw-r----- 1 root root   1723 Apr 27 20:26 NOTICE
-rw-r----- 1 root root   7138 Apr 27 20:26 RELEASE-NOTES
-rw-r----- 1 root root  16246 Apr 27 20:26 RUNNING.txt
drwxr-x--- 2 root root   4096 Jun 27 07:13 bin
drwx--S--- 1 root root   4096 Jun 28 00:37 conf
drwxr-sr-x 3 root staff  4096 Jun 27 07:12 include
drwxr-x--- 2 root root   4096 Jun 27 07:12 lib
drwxr-x--- 1 root root   4096 Jun 28 00:37 logs
drwxr-sr-x 3 root staff  4096 Jun 27 07:12 native-jni-lib
drwxr-x--- 2 root root   4096 Jun 27 07:12 temp
drwxr-x--- 1 root root   4096 Apr 27 20:24 webapps
drwxr-x--- 1 root root   4096 Jun 28 00:37 work

작업을 마친 뒤에는 exit를 입력하거나 Ctrl+D를 눌러 컨테이너 셸에서 빠져나오면 된다. 이 명령은 컨테이너 내부의 셸만 종료하며, 실행 중인 컨테이너 자체를 중지하지는 않는다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.