programing

실행 중인 도커 컨테이너의 IP 주소를 가져오는 방법

sourcejob 2023. 10. 26. 20:58
반응형

실행 중인 도커 컨테이너의 IP 주소를 가져오는 방법

맥용 도커를 사용하고 있습니다.저는 도커 컨테이너에서 nodejs 기반 마이크로 서비스를 실행하고 있습니다.브라우저를 통해 노드 마이크로 서비스를 테스트하고 싶습니다.실행 중인 도커 컨테이너의 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모든 것이 정상이고 특별한 네트워크 옵션을 지정하지 않은 경우.

편집 "부시 속이기" 대신 도커 기능을 사용하는 또 다른 우아한 방법:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>

EDIT2 현대 도커 엔진의 경우, 이제는 이런 방식입니다(댓글 덕분에!).

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <containerNameOrId>

사용하다--format전체 컨테이너 정보 대신 IP 주소만 가져오는 옵션:

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>

최신 도커 엔진의 경우 다음 명령을 사용합니다.

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에서 작업했습니다.

맥에서 컨테이너 IP에 직접 접속할 수 없었습니다.사용할 필요가 있습니다.localhost포트 포워딩과 함께(예: 포트가 8000인 경우),http://localhost:8000

https://docs.docker.com/docker-for-mac/networking/ #알려진 limit-사용 사례-및 해결 방법 참조

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

실행 중인 컨테이너 내에서 IP 주소를 보려면/etc/hosts파일은 보기에 아주 좋은 장소입니다.이제, 고유하게 정보를 식별합니다.hosts파일, 컨테이너를 실행하는 것이 좋은 방법입니다.-h선택. 과 같습니다샘플 명령은 다음과 같습니다.

  1. 다음을 사용하여 컨테이너 실행-h트:

docker run -td -h guju <image name>

  1. 실행 중인 컨테이너에 로그인하여/etc/hosts파일. 다음과 같은 항목이 표시됩니다.

172.17.0.5 guju

모든 컨테이너의 IP 주소가 나열됩니다.

while read ctr;do
    sudo docker inspect --format "$ctr "'{{.Name}}{{ .NetworkSettings.IPAddress }}' $ctr
done < <(docker ps -a --filter status=running --format '{{.ID}}')

호스트 시스템 외부에서 도커의 IP에 액세스할 수 없습니다.브라우저가 다른 시스템에 있는 경우 다음 경로를 통해 호스트 포트를 컨테이너 포트에 매핑하는 것이 좋습니다.-p 8080:8080명령을 실행합니다.

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

언급URL : https://stackoverflow.com/questions/43692961/how-to-get-ip-address-of-running-docker-container

반응형