본문 바로가기
[DevOps]/Docker

도커 컨테이너와 상호작용할 수 있는 Interactive Mode에 대해 알아보기

by 팡펑퐁 2023. 6. 16.
728x90

파이썬 커스텀 이미지를 만들기 위한 도커 파일 생성

FROM python

  • 파이썬 공식 이미지를 베이스 이미지로 사용한다.

WORKDIR /app

  • 컨테이너가 실행되면 작업 디렉터리를 /app으로 설정한다.

COPY . /app

  • 도커 파일과 함께 있는 파일을 모두 app 폴더에 복사한다.

CMD ["python", "run.py"]

  • 컨테이너가 시작될 때 실행되어야 하는 명령이다.

 

 

도커 이미지 빌드하기

  • docker build . 명령어를 실행하고 image ID를 복사한다.
  • 여기서 image ID는 sha256으로 암호화된 부분이다.

 

 

도커 컨테이너 실행하기

  • docker run 명령어를 통해 컨테이너를 실행하려고 했지만 실패했다.
  • 이유는 컨테이너로 실행중인 애플리케이션과 상호작용을 할 수 없기 때문이다.
    • 파이썬 코드는 min, max를 입력받아 두 수 사이의 랜덤한 수를 출력하는 코드이다.
  • docker run만을 사용하면 디폴트로 컨테이너에 연결이 되며 컨테이너에 의해 출력된 결과를 받을 수 있다.
  • 하지만, 사용자는 어떠한 것도 입력할 수 없다. 이것 때문에 에러가 발생한 것이다.
  • 지금 필요한 것은 사용자가 앱에 특정 값을 입력하는 상호작용이 가능한 인터렉티브 모드(Interactive mode)이다.

 

 

인터렉티브 모드 사용하기

docker run

  • 도커에서 컨테이너를 인터렉티브 모드로 실행하기 위해서는 -i or --intercative 플래그를 사용해야 한다.
  • -t 플래그를 사용하면 컨테이너가 입력을 수신할 수 있는 터미널을 생성하게 된다.
  • -i와 -t를 결합하여 -it라는 하나의 플래그로 결합하여 사용할 수 있다. 
  • 이제 상호작용이 가능해져 min과 max 값 사이의 랜덤한 수를 하나 출력하기 위해 두 수를 입력받게 된다.
  • 프로그램이 끝나면 랜덤한 값을 출력하고 터미널이 종료된다.

 

docker start

  • docker start로 컨테이너를 재시작 하고 싶을 때 docker start가 디폴트로 detached 모드로 실행된다는 문제가 있다. 
  • 이를 해결하기 위해서는 docker start에 -a 플래그를 추가하여 attached 모드로 사용할 수 있다.
  • 그러나, 이 방법을 사용하면 작동한 후에 한 번만 값을 입력할 수 있다.
  • -i 플래그를 함께 사용해야 interactive mode가 활성화되어 상호작용이 문제없이 가능하다.

 

  • docker start -a -i 명령어로 출력 결과를 수신하는 것뿐만 아니라 입력을 하는 상호작용이 가능해졌다.

 

 

정리

  • 필요에 따라 컨테이너와 상호작용을 할 수 있다.
  • 컨테이너의 애플리케이션과 상호작용을 하고 싶다면 Intercative mode를 사용하면 된다.

 

 

 

참고

Udemy - Docker & Kubernetes : 실전가이드

728x90