실행중인 컨테이너에 연결
'컨테이너에 연결'은 컨테이너 (및 그 안에있는 모든 프로그램)가 실행되고있는 상황에서 터미널 세션을 시작하는 행위입니다. 이것은 주로 디버깅 목적으로 사용되지만
특정 데이터를 컨테이너 내에서 실행되는 프로그램에 전달해야하는 경우 필요할 수도 있습니다.
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
이상, 도커 컨테이너에 접속하는 방법과, 다시 빠져나오는 방법을 간단히 알아보았다.
'kubectl' 카테고리의 다른 글
쿠버네티스 kubectl 명령어 (0) | 2021.09.07 |
---|---|
kubectl 설치 및 설정 (0) | 2021.02.17 |