Seongwon Lim

[Docker] 실행 중인 컨테이너에 명령어 전달하기 본문

Docker

[Docker] 실행 중인 컨테이너에 명령어 전달하기

limsw 2022. 7. 20. 14:14
반응형

서론

이번 글에서는 실행 중인 도커 컨테이너에 명령어를 전달하는 방법을 예제를 통해서 알아볼 예정이다.

또한 도커에서 제공하고 있는 이미지인 alpine 이미지를 통해서 예제를 진행할 것이며, 도커 환경이 구성되어 있다는 가정 하에 진행되는 글이므로 도커 설치를 하지 않은 분들은 도커 환경을 먼저 구성할 것을 권장한다.

alpine 이미지란?

alpine은 전체 패키지와 인덱스의 크기가 약 5MB 크기를 가지는 경량 Linux 이미지이다.

 

 

Alpine - Official Image | Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

alpine 이미지 리스트 출력하기

$ docker search alpine

 

터미널에 위 명령어를 입력하면 도커 허브에 존재하는 alpine 이미지 리스트를 가져온다.

 

OFFICIAL 탭의 [OK] 표시가 있는 이미지가 도커에서 공식적으로 제공하는 이미지이다.

이번 예제에서는 공식 이미지인 alpine 이미지를 사용할 것이다.

 

이제 이미지를 가져오는 방법을 알아보자.

alpine 이미지 가져오기

$ docker pull alpine

 

위 명령어를 입력하여 alpine 이미지를 가져오자.

 

alpine 이미지를 이용하여 컨테이너 실행하기

$ docker run -d alpine ping localhost
$ docker ps

 

  • run 명령어를 통해 먼저 alpine 이미지를 통해서 컨테이너를 실행시킨다.
  • ps 명령어를 통해 실행 중인 컨테이너를 확인한다.

이제, 마지막으로 실행 중인 컨테이너에 명령어를 전달하는 방법을 알아보자.

실행 중인 컨테이너에 명령어 전달하기

실행 중인 컨테이너에 명령어를 전달하기 위해서는 사용할 컨테이너의 Container_ID 값을 알아야 한다.

위에서 docker ps 명령어를 통해 확인한 컨테이너 아이디 값은 1190d2065363 이므로 해당 값을 사용하면 된다.

 

$ docker exec container_id <전달할 명령어>

 

명령어를 전달할 때에는 exec 키워드를 사용한다.

이번 예제에서는 디렉토리 내용을 출력하는 ls 명령어를 전달해볼 것이다.

 

  • docker exec 1190d2065363 ls

 

실행 중인 컨테이너가 전달 받은 명령어를 수행하고 종료된 것을 확인할 수 있다.

명령어 실행 후 백그라운드로 나오는 것이 아니라 해당 컨테이너에 직접 들어가서 수행하고 싶으면 다음과 같이 명령어를 수정한다.

 

docker exec -it container_id /bin/sh

 

exec 명령어 뒤에 -it 옵션을 추가한다. 또한, alpine 이미지는 bash쉘이 아닌 sh쉘을 사용하기 때문에 /bin/sh 경로로 접속하면 된다.

 

Comments