[도커] 도커 유틸리티 컨테이너

유틸리티 컨테이너

특정 환경만 포함하는 컨테이너를 의미한다.

많은 프로젝트와 많은 프로그래밍 언어는 프로젝트를 생성하기 위해 호스트 머신에 설치할 부가적인 툴이 필요하다.

프로젝트를 컨테이너에 넣을 수 있지만 , 초기에는 툴이 시스템에 설치되어 있어야한다. 바로 그 부분을 유틸리티 컨테이너가 도와준다.


기존 컨테이너를 실행하던 방법

우선 컨테이너로 node 이미지를 컨테이너로 작동한다. 하지만 컨테이너가 바로 죽어버린 것을 볼 수 있다. node는 -it (인터렉티브)옵션이 필요하기 때문이다.

 

docker run -it --name node node

위처럼 인터렉티브 옵션과, 네임 옵션을 첨부한 후 node 이미지로 실행한 컨테이너의 터미널로 진입하는것을 볼 수 있다.

 docker container prune

컨트롤 c를 두번 눌러서 나온 후 node 컨테이너에서 나온 후 컨테이너를 다 삭제한다.


docker exec

docker container run --name node -itd node

도커 컨테이너를 위와 비슷하지만 -d (디테치모드) 옵션을 넣어서 실행시킨다. 그러면 node 이미지를 기반을 돌아가는 컨테이너가 위와 다르게 컨테이너 안 입력으로 들어가지 않는다.

 

docker exec -it node npm init

docker exec을 사용하면 Dockerfile에 입력되있는 명령이나 컨테이너가 실행하는 기본 명령 외에 실행중인 컨테이너 내에서 특정 명령을 실행할 수 있다.

애플리케이션이 계속 실행중인 상태에서 컨테이너 내에 추가적인 명령을 실행할 수 있다는 것이다.

인터렉티브 모드로 실행한 컨테이너에 npm init 명령을 하면 이렇게 실행되는것을 볼 수 있다.

 

docker exec -it node /bin/bash

이렇게 진입한 node 컨테이너 내부에서 ls로 npm init으로 인한 package.json이 만들어 진것을 확인할 수 있다.


docker container 명령 오버라이드

일단 컨테이너를 중지시키고

 docker container run -it node npm init

컨테이너에서 실행되는 디폴트 명령은 node 실행 파일 그 자체이다.

-it 옵션으로 node 명령을 실행할 수 있는 인터렉티브 모드로 진입할 수 있는데, 인터렉티브 모드는 연결 상태를 유지하며, 입력모드를 유지할 수 있다.

그리고 이미지 이름 뒤에 명령어를 지정하여 디폴트 명령을 오버라이드 할 수 있다.

npm init으로 생성하려는 노드 프로젝트에 대한 구성설정을 물어보는데 다 입력하고는 작업이 완료되고, 컨테이너가 중지된다. (가능은 한건데 컨테이너가 중지되어서 그렇게 유용한 옵션은 아니다.)

반면, docker exec는 메인 프로세스를 중단하지 않고, 컨테이너 내부에 작성된 로그 파일을 읽는데 유용하다.


 

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Docker 다른 글

    이전 글

    다음 글