ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [yongggg's] 서버 docker container 내의 0.0.0.0 바인딩 후, 로컬 접속 에러
    kubernetes & Docker 관련 2025. 1. 10. 14:54

    API 및 서버 통신에 미숙한 나를 반성하며...

    docker container에서 모델을 host 0.0.0.0로 바인딩 했는데, 로컬에서 접속 에러가 뜬 경우에는 다음과 같이 확인하면 될 것 같습니다.

     

    저는 아래의 그 어떤 방법으로도 해결할 수 없었지만, 이유는 docker container를 최초에 생성할 때, port를 안 뚫어서 생긴 일이었습니다... 이것부터 확인하는 것이 좋을 것 같아서 글을 적습니다!

    그리고... 사내 VPN을 신청했을 때, 서버와 사용할 port도 같이 신청하는데 이 port 번호도 몇번 대인지 check를 하셔야합니다!!

     

    docker로 앱을 띄울 때, 꿀팁은 다음과 같습니다.

    1. 실제 모델 서빙 서버는 컨테이너 안의 30000번 포트에 떠있음
    2. 호스트 서버(skcc)의 도커에 컨테이너를 띄울때 (예를 들어)8888번 포트 -> 컨테이너의 30000포트에 연결
    3. 내 로컬에선 호스트 서버의 8888번 포트에 요청을 날려야 정상 동작

    0. docker container에 뚫어 놓은 port 확인

    docker ps -a
    
    #or
    docker inspect [docker name] | jq .
    • 최초의 정의한 docker container의 뚫려있는 port 확인.
      $\rightarrow$ port를 안 뚫었거나 사용할 포트를 안뚫었다면, container를 삭제하고 다시 만들어야 합니다.
    • 서버가 Docker 컨테이너나 VM 환경에서 실행 중이라면, 외부에서 해당 포트로 접근하기 위해 네트워크 설정이 추가로 필요할 수 있습니다.
      •  

    1. 서버에서 포트가 열려 있는지 확인

    netstat -tuln | grep 30000
    • 사내 서버가 30000 포트에서 올바르게 실행되고 있는지 확인합니다.
      • LISTEN 상태로 나타나지 않는다면 서버가 제대로 실행되지 않았을 가능성이 있습니다.
      • 서버가 실행 중이라면 결과에 0.0.0.0:30000 또는 *:30000과 같은 출력이 나타나야 합니다.

    2. 서버 방화벽 규칙 확인

    • 사내 서버에 방화벽이 설정되어 외부에서 30000 포트로 접근을 차단하고 있을 가능성이 있습니다.

    Ubuntu의 경우 방화벽 확인:

    sudo ufw status

    30000 포트 열기:

    sudo ufw allow 30000

    3. 로컬 PC와 사내 서버의 네트워크 연결 확인

    ping {서버 IP} # not 127.0.0.1
    • 사내 서버의 IP가 10.250.107.206이라면, 로컬 PC에서 해당 서버와 네트워크적으로 통신이 가능한지 확인합니다.
      • 응답이 없다면 네트워크 문제가 있을 수 있습니다.
      • 네트워크 담당자에게 문의하여 로컬 PC와 사내 서버 간의 통신을 허용하도록 설정해야 합니다.

    4. HTTP 요청 확인

    curl http://127.0.0.1:30000/v1
    • 사내 서버의 HTTP API가 올바르게 동작하는지 확인합니다.
      • 사내 서버에서 curl 명령을 사용해 API에 접근:
        올바른 응답이 나온다면 서버가 잘 작동하고 있습니다.

    5. 로컬 PC에서 사내 서버로 요청 보내기

    curl http://[사내서버 IP]:[port]/v1
    • 로컬 PC에서 해당 IP와 포트로 HTTP 요청을 시도해봅니다.
      • 요청이 실패하면 서버의 외부 접근 설정 또는 방화벽을 확인해야 합니다.

    6. 0.0.0.0 바인딩 확인

    • 서버가 0.0.0.0으로 바인딩되지 않았을 가능성도 있습니다. --host 파라미터가 정확히 적용되었는지 다시 확인하고, 로그를 살펴봅니다.

    명시적으로 IP 주소를 설정:

    --host 0.0.0.0 #or 사내서버 IP

     

Designed by Tistory.