본문으로 바로가기
반응형

프로젝트를 진행하다보니 도커를 사용할 일이 있어서 쓰게 되었습니다.

 

증권사 API를 사용하는 일이라 윈도우 컨테이너(Windows Container)를 만들어서 쓰게 되었는데, 그 과정에서 부주의하면 오류가 뜰 수 있는 부분을 발견해 남깁니다.

 

Dockerfile을 만들다 보면 코드를 실행해야하는 경우가 생기는데, 이때 CMD나 ENTRYPOINT를 사용해 작성합니다.

예를 들자면 아래 코드처럼요.

CMD [ "ipconfig" ]

 

그런데 이때, 명령어에 매개변수를 써야한다면 어떻게 해야할까요?

그럼 보통 별 생각 없이 아래처럼 이어서 작성할겁니다.

CMD [ "java -version" ]

하지만 이렇게 작성하고 도커를 빌드한 후, 실행을 하게되면 아래 오류를 맞닥뜨리게 됩니다.

docker: Error response from daemon: container c9cb4e2f19923f8efef292dbd4726cd371851669040f1bf3c8ca249adb1a0e55 encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2)
[Event Detail:  Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail:  Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail: onecore\vm\compute\management\orchestration\vmhostedcontainer\processmanagement.cpp(173)\vmcomputeagent.exe!00007FF77BBA9F4B: (caller: 00007FF77BB5E13A) Exception(2) tid(394) 80070002 The system cannot find the file specified.
    CallContext:[\Bridge_ProcessMessage\VmHostedContainer_ExecuteProcess]
 Provider: 00000000-0000-0000-0000-000000000000].

 

이 오류가 발생하는 이유는 바로 명령어 사이에 띄어쓰기가 있기 때문인데요.

매개변수를 적고자 한다면 CMD [ "ping -version" ] 대신 CMD [ "ping", "-version" ] 처럼 일일히 분리를 해주면 정상적으로 작동합니다.

반응형