728x90

 

실행중인 컨테이너에 연결

 

'컨테이너에 연결'은 컨테이너 (및 그 안에있는 모든 프로그램)가 실행되고있는 상황에서 터미널 세션을 시작하는 행위입니다. 이것은 주로 디버깅 목적으로 사용되지만

특정 데이터를 컨테이너 내에서 실행되는 프로그램에 전달해야하는 경우 필요할 수도 있습니다.

 

attach 명령은이를 수행하는 데 사용됩니다. 이 구문은 다음과 같습니다.

docker attach <container>

 

<container> 는 컨테이너 ID 또는 컨테이너 이름이 될 수 있습니다. 예를 들면 :

docker attach c8a9cf1a1fa8

 

또는:

docker attach graceful_hopper

 

사용자 및 도커 설정 방법에 따라 위의 명령을 sudo 해야 할 수도 있습니다.

 

참고 : Attach는 한 번에 하나의 쉘 세션 만 컨테이너에 첨부 할 수 있습니다.

 

경고 : 모든 키보드 입력은 컨테이너로 전달됩니다. Ctrl-c 를 누르면 컨테이너가 삭제 됩니다.

 

첨부 된 컨테이너에서 분리하려면 Ctrl-p , Ctrl-q 를 연속적으로 누르십시오.

 

여러 셸 세션을 컨테이너에 연결하거나 간단히 대안으로 사용하려면 exec 를 사용할 수 있습니다. 컨테이너 ID 사용 :

 

docker exec -i -t c8a9cf1a1fa8 /bin/bash

컨테이너 이름 사용 :

 

docker exec -i -t graceful_hopper /bin/bash

exec 는 컨테이너 (이 경우에는 /bin/bash (쉘, 아마도 컨테이너에있는 쉘) 내의 프로그램을 실행합니다. -i 는 대화식 세션을 나타내고 -t 는 의사 TTY를 할당합니다.

 

참고 : 연결 과 달리 Ctrl-c 를 누르면 대화식으로 실행될 때만 exec 'd 명령이 종료됩니다.

 

---------------------------------------------------------------------------------------------------------------------

1. 실행중인 컨테이너 목록 확인

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

134adb2ba12 my-image "/bon/bash" 2 hours ago Up 2 hours my-container

 

위와 같이 목록이 출력되면,

 

접속하고자 하는 컨테이너의 ‘CONTAINER ID’ 또는 ‘NAMES’ 정보를 활용해 다음 명령을 입력하면 된다.

 

 

2. 컨테이너 접속

 

CONTAINER ID 혹은 NAMES를 활용해 접속해보자.

 

$ docker exec -it [134adb2ba12 혹은 my-container] /bin/bash root@134adb2ba12:~/$

 

 

위와 같이 쉘 프롬프트에 CONTAINER ID가 뜨면서 모양이 바뀌면 접속 성공이다.

 

이제 컨테이너 안쪽에서 마음껏 원하는 작업을 수행하면 된다.

 

 

 

exec 명령은 도커 컨테이너 안쪽에 명령어를 전송할때 사용한다.

 

이 때, 명령어를 /bin/bash 로 주게되면 도커 컨테이너 안쪽의 bash 쉘이 실행된다.

 

접속이란게 결국 리눅스의 쉘을 사용하겠다는 뜻이기 때문에, 이런 방식으로 컨테이너에 접속한다.

 

 

 

참고로 -i 옵션은 표준 입출력을 사용하겠다는 의미로,

 

-t 옵션만 주게되면 root@134adb2ba12:~/$ 와 같이 프롬프트 모양이 바뀌긴 한다.

 

하지만 표준 입출력 옵션을 주지 않았으므로 입력을해도 아무런 반응이 없다.

 

 

 

또한 -t 옵션은 가상 tty를 통해 접속하겠다는 의미로,

 

-i 옵션만 주게되면 root@134adb2ba12:~/$ 부분이 뜨지 않는다.

 

그냥 빈 입력화면이 나오는데, 다만 명령어를 입력하면 명령은 제대로 수행된다.

 

 

 

3. 컨테이너 빠져나오기

 

 

컨테이너를 빠져나올때는 단순히 exit 명령을 사용하면 된다.

 

$ docker exec -it [134adb2ba12 혹은 my-container] /bin/bash

root@134adb2ba12:~/$

root@134adb2ba12:~/$ exit

 

 

이상, 도커 컨테이너에 접속하는 방법과, 다시 빠져나오는 방법을 간단히 알아보았다.

 

728x90

'kubectl' 카테고리의 다른 글

쿠버네티스 kubectl 명령어  (0) 2021.09.07
kubectl 설치 및 설정  (0) 2021.02.17

+ Recent posts