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