ECS에서 docker run 명령의 -t, --tty 옵션에 해당하는 설정을 한 이야기

소개



안녕하세요.
현재 저는 사내의 데이터 분석 기반의 쇄신에 임하고 있습니다.

이번은 검증중의 DataSunrise를 ECS에 태울 수 있도록 시행착오를 실시하고 있던 중에서 발견했다,docker run 명령의 -t
DataSunrise에 대한 자세한 내용은 여기을 참조하십시오.

일의 발생



로컬에서 할 수있는 일이 ECS에서 할 수 없습니다.

검증을 위해 local 환경에서 컨테이너를 세웠습니다.--tty (local 환경에서)
이 경우는 예상대로 컨테이너가 일어나 https://[글로벌 IP]:11000으로 연결할 수 있었습니다.

이것을 ECS로 실현하고 싶었습니다만, ECS의 태스크는 즉시 종료해,
CloudWatchLogs는 docker run -itd -p 11000:11000 [datasunrise image id] 메시지만 흐릅니다.

시험에 local 환경에서,service is started.를 실행해 보면,docker run [datasunrise image id] 와의 표시만으로 컨테이너는 즉시 종료하고 있었습니다.
(본 메세지는 DataSunrise 컨테이너가 기동, 즉시 종료했을 때에 남기는 로그와 같습니다.)

결과적으로 ECS에서 service is started. 명령의 docker run , -t 옵션에 해당하는 것을 설정해야 한다고 판단했습니다.

결론



작업 정의에서 --ttypseudoTerminal로 설정하여 컨테이너를 계속 시작할 수있었습니다.
덧붙여 본 문제를 해결에 이끌어 주신 기사는 이쪽의 stackoverflow 입니다.

구체적인 설정 방법은 다음과 같습니다.

설정 방법



GUI에서 설정하는 방법을 설명합니다.
결국 JSON을 만지게 되므로 CLI로 설정하는 경우도 대응 가능하지 않을까 생각합니다.
  • 대상 ECS 작업 정의 열기
  • JSON으로 설정을 누르십시오.

    페이지 하단에 존재합니다. (이미지 빨간색 프레임 부분)
  • pseudoTerminal을 true로 변경

    초기 설정에서 null이 되었지만 true로 다시 쓰고 저장을 누르면 적용할 수 있었습니다. (EC2/Fargate 모두 적용 가능)
    *이쪽은 설명용 화상이므로, 해당 개소 이외는 환경에 맞추어 좋게 설정해 주세요. 만약을 위해.

  • 요약



    ECS에서 true 명령의 docker run , -t 옵션에 해당하는 설정을 만들었습니다.
    이번은 시행 착오 단계에서 stackoverflow에 도착한 것에 의해 해결했습니다만,
    잘 공식 문서를 읽어 보면

    pseudoTerminal
    Type: Boolean

    Required: no

    When this parameter is true, a TTY is allocated. This parameter maps to Tty in the Create a container section of the Docker Remote API and the --tty option to docker run.

    라는 기재가 있었습니다.

    제대로 공식 문서 읽어 보자는 교훈이었습니다. . .

    참고


  • DataSunrise 공식
  • Stack Overflow 해당 기사 How to enable tty and run interactive console with AWS ECS?
  • AWS ECS 공식 문서

  • 또, 시행착오 단계에서 이하 기사도 참고로 했습니다. 감사합니다.
    Docker 컨테이너를 시작한 상태로 유지

    좋은 웹페이지 즐겨찾기