작성
·
285
·
수정됨
0
[root@localhost node]# docker run -p 3000:3000 web
(node:6) [FSTDEP011] DeprecationWarning: Variadic listen method is deprecated. Please use ".listen(optionsObject)" instead. The variadic signature will be removed in fastify@5
.
(Use node --trace-deprecation ...
to show where the warning was created)
{"level":50,"time":1705310260096,"pid":6,"hostname":"5eaf7135a227","err":{"type":"Error","message":"listen EADDRNOTAVAIL: address not available 192.168.100.230:3000","stack":"Error: listen EADDRNOTAVAIL: address not available 192.168.100.230:3000\n at Server.setupListenHandle [as listen2] (node:net:1446:21)\n at listenInCluster (node:net:1511:12)\n at doListen (node:net:1660:7)\n at processTicksAndRejections (node:internal/process/taskqueues:84:21)","code":"EADDRNOTAVAIL","errno":-99,"syscall":"listen","address":"192.168.100.230","port":3000},"msg":"listen EADDRNOTAVAIL: address not available 192.168.100.230:3000"}
명령어 실행 시에 이런 에러 메시지가 나오는데 어떤 문제로 발생하는 에러인가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
docker run -p 3000:3000 web
명령어로 컨테이너를 실행하실 때 나타난 에러 메시지는 특정 IP 주소(192.168.100.230)와 포트(3000)에서 애플리케이션을 리스닝하는 데에 문제가 있음을 나타냅니다. EADDRNOTAVAIL
오류는 설정하신 주소가 해당 서버에서 사용 가능하지 않거나, 잘못되었을 때 발생합니다.
해당 에러를 해결하기 위해서는 다음의 방법들을 시도해볼 수 있습니다:
docker run
명령어에서 -p
플래그를 이용하여 포트를 매핑할 때는 일반적으로 호스트의 포트를 컨테이너 포트로 직접 매핑합니다. IP 주소를 명시할 필요는 없으며, 대부분의 경우 0.0.0.0:3000
혹은 단순히 3000:3000
으로 설정하면 됩니다. 예를 들어, 다음과 같이 명령어를 변경해보세요: docker run -p 3000:3000 web
만약 애플리케이션 코드 내부에서 특정 IP에 바인딩하려고 하신다면, 해당 IP가 컨테이너 내부에서 접근 가능한 IP인지 확인하세요. 일반적으로 애플리케이션은 0.0.0.0
을 사용하여 모든 인터페이스에 바인딩하는 것이 좋습니다.
Docker가 올바르게 설치 및 구성되어 있는지 확인합니다. Linux에서는 Docker daemon이 non-root 사용자에게 할당되도록 구성해야 할 수 있습니다. 이와 관련된 자세한 정보는 Docker 공식 문서를 참조하세요.
해당 문제를 해결해도 동일한 에러가 계속된다면 docker logs [컨테이너 ID 또는 이름]
을 입력하여 컨테이너의 로그에서 추가적인 오류 메시지를 확인하거나, 호스트 시스템의 네트워크 설정을 자세히 살펴보세요.