Docker 컨테이너의 셸에 들어가기
-
docker exec를 사용하여 Docker 컨테이너의 셸로 이동 -
docker container attach를 사용하여 Docker 컨테이너의 셸에 들어가기 - SSH(Secure Shell)를 사용하여 Docker 컨테이너의 셸로 이동
이 자습서에서는 여러 가지 방법을 사용하여 Docker의 컨테이너 셸에 들어가는 방법을 보여줍니다.
docker exec를 사용하여 Docker 컨테이너의 셸로 이동
이 명령을 사용하려면 컨테이너를 실행해야 합니다. 아래 명령을 사용하여 시스템의 컨테이너 상태를 확인할 수 있습니다.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38086474cb6c debian "bash" 2 days ago Exited (0) 2 days ago epic_jackson
1c955bac1a84 ubuntu "bash" 2 days ago Exited (0) 2 days ago musing_morse
1296f9b9d330 nginx "/docker-entrypoint.…" 2 days ago Exited (255) 2 days ago 80/tcp distracted_napier
실행 중인 컨테이너가 없으면 쉽게 만들 수 있습니다. rabbitmq 기본 이미지를 사용하여 컨테이너를 설정합니다.
아래와 같이 컨테이너를 만들기 전에 docker pull 명령을 사용하여 레지스트리에서 기본 이미지를 가져오는 것으로 시작합니다.
$ docker run -d rabbitmq
출력:
Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712
이제 실행 중인 컨테이너가 있어야 합니다. 다시 한 번 docker ps 명령을 사용하여 확인할 수 있습니다.
$ docker ps -a
출력:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" About a minute ago Up 57 seconds 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
-it 태그와 함께 docker exec 명령을 사용하여 컨테이너에 들어가거나 파일과 상호 작용하거나 일부 디버깅을 수행합니다.
exec 명령을 사용하면 실행 중인 컨테이너에서 명령을 실행할 수 있고 -it 태그를 사용하면 대화식으로 컨테이너를 열 수 있습니다.
마지막으로 sh 명령은 기본 셸 프롬프트를 열어 컨테이너 내에서 명령을 실행합니다.
isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#
이제 Docker 컨테이너에 들어갔으므로 컨테이너 내에서 다양한 명령을 실행할 수 있습니다. exit 명령을 입력하고 이 모드에서 기본 터미널로 다시 Enter 키를 누릅니다.
docker container attach를 사용하여 Docker 컨테이너의 셸에 들어가기
docker container attach 명령을 사용하여 실행 중인 컨테이너에 연결할 수도 있습니다. 이를 통해 컨테이너의 ID를 사용하여 실행 중인 컨테이너에 터미널 출력, 입력 및 오류 스트림을 연결할 수 있습니다.
그런 다음 다양한 명령을 실행하고 입력을 수락하고 지정된 컨테이너를 디버그할 수 있습니다. 앞서 언급했듯이 출력, 입력 및 오류 스트림을 첨부하려면 실행 중인 컨테이너가 필요합니다.
이를 위해 아래와 같이 docker ps를 사용합니다. 우리는 여전히 이전 섹션의 rabbitmq 컨테이너를 사용하고 있습니다.
$ docker ps -a
출력:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" 39 minutes ago Up 38 minutes 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
도커 컨테이너가 중지된 경우 여기에서 했던 것처럼 docker start 명령을 사용하여 먼저 시작해야 합니다.
$ docker start dcad9f270643
dcad9f270643
이제 도커 컨테이너가 예상대로 작동하지 않으면 docker container attach을 실행하여 컨테이너 내에서 무슨 일이 일어나고 있는지 확인할 수 있습니다.
$ docker container attach dcad9f270643
출력:
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_management_agent
SSH(Secure Shell)를 사용하여 Docker 컨테이너의 셸로 이동
마지막으로 일반적으로 SSH로 약칭되는 보안 셸을 사용하여 컨테이너 내에서 명령을 실행할 수도 있습니다. 그러나 이는 기본 이미지에 인플레이션을 야기하고 발생할 수 있는 구성 문제 때문에 가장 권장되지 않는 방법입니다.
또한 이 방법은 키를 직접 관리해야 하므로 보안 문제가 있습니다. 또한 일부 이미지는 이 방법을 본질적으로 지원하지 않을 수 있으므로 추가 구성이 필요할 수 있음을 고려해야 합니다.
그러나 이 방법을 사용해야 하는 경우 다음 단계를 따라야 합니다.
-
먼저 SSH 서비스를 설치하고 활성화해야 합니다.
-
그런 다음 컨테이너의 IP 주소를 검색해야 합니다.
-
마지막으로 검색된 IP 주소를 사용하여 컨테이너에 SSH로 연결합니다.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn