본문 바로가기
Server&Infra

docker exec, 컨테이너에 접근하기

by 향각산 2021. 9. 17.

docker exec <컨테이너 ID> <명령어> : 는 실행중인 컨테이너에 접근하기 위한 명령어 이다.

<명령어> 는 실제 컨테이너 안에서 동작할 명령어를 입력하는 부분이다.

 

실행중인 도커 컨테이너에 접근하려면 우선 컨테이너 ID를 알아야 한다.

 

1. docker ps를 이용하여 docker 컨테이너의 ID를 가져온다.

 

여기서 alpine이라는 컨테이너에 접근해서 ls 명령어를 사용해보면 다음과 같다.

이때 한가지 특이점을 찾아볼 수 있는 마지막에 내가 바라보고 있는 터미널이 도커 명령어를 칠때와 동일하다.

 

그냥 exec만 사용해서 명령어를 전달할뿐 컨테이너 안으로 들어가서 무엇인가 작업을 하는것은 아니다.

 

두 가지의 명령어가 추가로 필요하다. 하나는 -it , 다른하나는 쉘 or cli를 실행시키는 명령어이다.

docker exec <옵션> <컨테이너ID> <명령어>

-it는 interactive terminal 의 약자라고 하는데, 해당 명령어를 추가하면 실행중인 도커에 접근해서 입력한 명령어를 실행하고 그 상태를 유지시켜 주는 역할이라고 한다.

 

sh는 쉘에 접근하는 명령어이다. sh, bash, zsh, powershell등 다양한 명령어가 있는듯하다.

현재 예시는 윈도우 powershell에서 작성하고 있는데 아마 os환경등에 따라 구분지어지는듯 하다.

 

결론은 해당 옵션과 명령어를 함께 사용하면 sh을 열고 그 상태를 유지시킬 수 있다는 점이다.

 

여기서 생긴 -it 명령어에 궁금증이 하나 있다.

쉘로 접근하는 sh가 아니라 다른 명령어에 -it를 붙이면 어떻게 되는가?

 

결과는 다음과 같다.

접근만 하고 ls로 명령어를 치면 결과가 프린트 되었는데, -it 옵션을 줬더니 마치 서버에서 ls한 결과를 보여주는것처럼 조회됐다.

'Server&Infra' 카테고리의 다른 글

Mac Kubernetes 설치하기  (0) 2022.01.13
[Mac] Dockerfile Build Error - failed to solve with frontend dockerfile.v0  (0) 2021.09.26
docker 삭제  (0) 2021.09.15
docker stop, kill 차이점  (0) 2021.09.15
docker run, create, start  (0) 2021.09.15