저는 Docker 컨테이너 세트를 호스팅하는 CentOS 7 운영 체제를 사용하고 있습니다.
웹 브라우저를 사용하면 포트 80에서 서비스에 액세스하고 응답을 받을 수 있습니다. 약간의 로컬 지식은 응답이 Docker 컨테이너에서 나온다는 것을 이해하는 데 도움이 됩니다.
그러나 큰 문제가 있습니다. 운영 체제에서 포트 80이 열려 있음을 표시하는 방법을 찾을 수 없는 것 같습니다. 내가 시도한 내용은 다음과 같습니다(모두 root
사용자 포함).
netstat -tulnp | grep 80
목록아무것도 없다포트 80에서 수신ss -nutlp | grep 80
포트 80에서 수신 대기하지 않는 항목 나열lsof -i -P | grep 80
또한 포트 80에서 수신 대기하지 않는 항목도 나열되어 있습니다.wget 127.0.0.1
index.html을 성공적으로 얻었습니다.
심문하다루스트어바웃직접 통과는 docker ps
실제로 내가 찾고 있는 대답이 아닙니다. 왜냐하면 우리는 운영 체제에 물어보고 포트 80에 대한 요청을 처리하는 프로세스를 확인할 수 있어야 하기 때문입니다. docker ps
반환되기 때문에 이것도 도움이 되지 않습니다.일부PORTS 열에 다음 항목이 있는 컨테이너:
PORTS
80/tcp
8080/tcp
80/tcp
또 가기 싫다도커운영 체제를 조사하고 포트 80 처리를 담당하는 프로세스를 식별할 수 있는 방법이 있어야 하므로 답을 찾고 있습니다.
내 유일한 추측은도커이러한 네트워크 요청을 차단하려면 일종의 저수준 드라이버를 설치하십시오.
이 정보와 명령줄 명령을 배포하기 위해 CentOS를 얻는 방법에 대한 제안이 있으면 크게 감사하겠습니다!
답변1
Docker 호스트가 포트 80에서 수신 대기하고 있습니까? 포트 80에서 어떤 포트에 있든 리디렉션될 수 있습니다.예내장된 방화벽 모니터링을 사용하세요.
IPTABLES를 실행 중인 경우 다음 명령을 사용하여 확인할 수 있습니다.
iptables -L -t nat
그러면 다음과 유사한 리디렉션이 무엇인지 알려주는 DOCKER라는 체인이 표시됩니다.
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere
RETURN all -- anywhere anywhere
DNAT tcp -- anywhere anywhere tcp dpt:http-alt to:172.17.0.3:80
DNAT tcp -- anywhere anywhere tcp dpt:4433 to:172.17.0.3:443
DNAT tcp -- anywhere anywhere tcp dpt:1688 to:172.17.0.4:1688