[docker] 실행중인 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>


답변

--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


답변

플래그로 컨테이너를 시작할 수 있습니다. -P . 이것은 이미지의 노출 된 포트에 임의의 포트를 “할당”합니다.

함께 docker port <container id>사용하면 무작위로 선택이 끝난 포트를 볼 수 있습니다. 그러면를 통해 액세스 할 수 있습니다 localhost:port.


답변

제 경우에는 아래 가 Mac에서 작동했습니다 . .

Mac에서 직접 컨테이너 IP에 액세스 할 수 없습니다. localhost포트 포워딩과 함께 사용해야합니다 . 예를 들어 포트가 8000 인 경우http://localhost:8000

보다 https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds를 하십시오.

원래 답변은 https://github.com/docker/for-mac/issues/2670#issuecomment-371249949입니다.


답변

해당 호스트 시스템 외부에서 도커의 IP에 액세스 할 수 없습니다. 브라우저가 다른 컴퓨터에있는 경우 전달하여 호스트 포트를 컨테이너 포트에 매핑하는 것이 더 좋습니다.-p 8080:8080 실행 명령 .

전달 -p하면 호스트 포트를 컨테이너 포트에 매핑 할 수 있으며 프록시는 해당 호스트 포트에 대한 모든 트래픽을 지정된 컨테이너 포트로 전달하도록 설정됩니다.