내부에 js 응용 프로그램이있는 도커 컨테이너가 있습니다. 모든 localhost에서 잘 작동하지만 원격 서버에서 실행하려고 할 때 인터넷에 연결되어 있지 않고 첫 번째 쿼리에서 충돌합니다. 다른 방법으로 실행을 시도했지만이 문제를 해결하는 옵션이 없습니다. 그것을 고치는 방법에 대한 제안?
실행 명령은 다음과 같습니다.
docker run --network=host --shm-size=1g --rm -u root --dns 8.8.8.8 --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --device=/dev/net/tun --privileged --sysctl net.ipv6.conf.all.disable_ipv6=0 containerID
컨테이너 셸에서 IP 주소를 ping하고 이름을 확인할 수 없습니다.
단계별로 디버깅하고 디버깅하는 동안 docker 명령을 단순화하는 것이 좋습니다.
나는 당신의 컨테이너가 전혀 시작되지 않는 것을 게스트 할 수 있습니다. 컨테이너 로그에는 무엇이 있습니까?
따라서 디버깅하면 먼저 모든 매개 변수를 제거하고 대화 형 모드에서 실행 명령으로 / bin / bash를 실행하고 컨테이너에서 인터넷을 사용할 수 있는지 확인합니다.
docker run -it --network=host --shm-size=1g --rm --name=test1 --privileged --entrypoint="" containerID /bin/bash
(containerID는 실제로 이미지 이름 또는 이미지 ID입니다)
모든 것이 정상이면 다른 매개 변수를 하나씩 추가하고 문제가있는 매개 변수를 확인하는 것이 좋습니다.
-u root
--dns 8.8.8.8
--cap-add=NET_ADMIN
--cap-add=SYS_ADMIN
--device=/dev/net/tun
--sysctl net.ipv6.conf.all.disable_ipv6=0
또 다른 것은 그것이를 가진 것 같아입니다 --net=host
그리고 --sysctl net.ipv6.conf.all.disable_ipv6=0
당신은 당신이하지 않고 실행할 때와 같은 별도의 네트워크 스택이 없기 때문에이 경우는, 호스트 시스템의 매개 변수를 변경 것이기 때문에, 정말 옳은 일을하지 않습니다 --net=host
.
오류의 가능한 원인은 다음과 같습니다.-VM 공급자가 net.ipv6.conf.all.disable_ipv6 = 0을 변경할 수 없습니다.-Dockerfile에 설치된 패키지에 문제가 있습니다 (컨테이너를 빌드하는 데 사용합니까, 또는 컨테이너 이미지 자체를 업로드 하시겠습니까?). 도커 로그를 확인해야합니다 (아마도 제거해야 함 --rm
). 애플리케이션 구성에 몇 가지 오류가 있습니다 (예 : 하드 코딩 된 IP 주소 또는 서버 측 환경에 존재하지 않는 DNS 이름).
이 단계를 따르면 실제 원인을 찾고 문제를 해결할 수 있다고 생각합니다. 행운을 빕니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다