Mac 용 Docker를 사용하고 있습니다. Docker 컨테이너에서 nodejs 기반 마이크로 서비스를 실행하고 있습니다. 브라우저를 통해 노드 마이크로 서비스를 테스트하고 싶습니다. 실행중인 Docker 컨테이너의 IP 주소를 얻는 방법은 무엇입니까?
Mac 용 Docker를 사용하고 있습니다. Docker 컨테이너에서 nodejs 기반 마이크로 서비스를 실행하고 있습니다. 브라우저를 통해 노드 마이크로 서비스를 테스트하고 싶습니다. 실행중인 Docker 컨테이너의 IP 주소를 얻는 방법은 무엇입니까?
답변:
호스트에서 컨테이너로 포트를 매핑하지 않으려면 컨테이너의 도커 범위 ip에 직접 액세스 할 수 있습니다. 이 범위는 기본적으로 호스트에서만 액세스됩니다. 다음을 수행하여 컨테이너 네트워크 데이터를 확인할 수 있습니다.
docker inspect <containerNameOrId>
아마도 필터링하는 것이 더 좋습니다.
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
일반적으로 기본 도커 IP 범위는 172.17.0.0/16
. 모든 것이 정상이고 특별한 네트워크 옵션을 지정하지 않은 경우 호스트가 있어야 172.17.0.1
하고 첫 번째 컨테이너가 있어야합니다 172.17.0.2
.
"bash 속임수"대신 docker 기능을 사용하는 또 다른 우아한 방법을 편집하십시오 .
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost
:)
http://172.17.0.2:anyPort
호스트에서 사용 하는 제안 된 방법으로 수행 할 수 있습니다 . 물론 호스트에서 localhost를 사용하여 액세스하려면 포트를 매핑해야합니다. OP가 원하는 것을 볼 수 있습니다.
docker run --name struts --rm -i tomcat
2. 컨테이너의 IP를 가져 docker inspect struts | grep '"IPAddress"' | head -n 1
옵니다 ( 하나만있는 경우) : 3. 호스트의 브라우저에서 엽니 다 http://x.x.x.x:8080
. Apache Tomcat 기본 페이지를 볼 수 있습니다.
--format
옵션을 사용 하여 전체 컨테이너 정보 대신 IP 주소 만 가져옵니다.
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
최신 Docker 엔진의 경우 다음 명령을 사용하십시오.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
오래된 엔진의 경우 다음을 사용하십시오.
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
용기 내에서 바로 얻고 싶다면 시도해 볼 수 있습니다.
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
제 경우에는 아래 가 Mac에서 작동했습니다 . .
Mac에서 직접 컨테이너 IP에 액세스 할 수 없습니다. localhost
포트 포워딩과 함께 사용해야합니다 . 예를 들어 포트가 8000 인 경우http://localhost:8000
원래 답변은 https://github.com/docker/for-mac/issues/2670#issuecomment-371249949입니다.