Docker 컨테이너 내부에서 Docker 호스트의 IP 주소 가져오기
IP 주소는 인터넷 프로토콜 주소를 의미하며 192.168.0.1
구문의 숫자 값입니다. IP 주소는 네트워크에 연결된 장치를 고유하게 식별하며 인터넷의 다른 장치에서 실행되는 응용 프로그램에 액세스하는 데도 도움이 됩니다.
애플리케이션은 localhost 또는 AWS와 같은 원격 서버의 두 가지 환경에서 실행할 수 있습니다. 이러한 애플리케이션은 호스트의 IP 주소를 사용하여 실행 중인 애플리케이션 또는 컨테이너에 액세스합니다.
우리는 일반적으로 로컬 호스트에서 애플리케이션을 개발하고 실행하므로 이 자습서에서는 프로덕션에서 실행되는 애플리케이션을 다루지 않습니다. 이 자습서에서는 Docker 컨테이너 내부에서 Docker 호스트의 IP 주소를 가져오는 방법을 이해합니다.
새 프로젝트 만들기
WebStorm IDEA를 열고 파일 > 새로 만들기 > 프로젝트
를 선택합니다. 열리는 창에서 빈 프로젝트를 선택하고 프로젝트 이름을 무제
에서 docker-host-ip
로 변경하거나 원하는 이름을 사용하십시오.
마지막으로 Create 버튼을 눌러 빈 프로젝트를 생성합니다.
이 애플리케이션을 테스트하기 위해 무작위로 생성된 텍스트가 포함된 웹 페이지를 표시하는 Nginx를 사용합니다. index.html
파일을 만들고 다음 코드를 복사하여 파일에 붙여넣습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lorem ipsum text</title>
</head>
<body>
<p>Magna elaboraret dictumst sed quidam potenti tempus
principes morbi. Sit libero et eruditi lectus nonumes simul.
Dicam putent diam volumus similique ponderum sententiae maecenas mattis ridens.
Homero iisque regione voluptatibus nullam detraxit nullam eleifend brute.
Ligula orci dicat ac luptatum quisque appareat invidunt odio mazim.
Reformidans impetus facilis veniam fringilla.
Consectetur eros ferri congue latine constituto veritus persequeris dolorum felis.
Harum felis theophrastus aliquam wisi nibh nec assueverit mi nonumes.
Cubilia option ei ex vulputate at habeo aliquet omittantur delectus.
Sanctus dolorem moderatius venenatis agam suscipit comprehensam imperdiet amet.</p>
</body>
</html>
이 텍스트를 생성하려면 Lorem 플러그인을 설치하고 개발 환경에서 코드 > 생성 > 텍스트 생성
을 눌러 10개의 문장을 포함하는 텍스트를 생성하십시오.
이미지 정의
Dockerfile
이라는 파일을 만들고 다음 지침을 복사하여 파일에 붙여넣습니다.
FROM nginx:1.23.1-alpine
COPY . /usr/share/nginx/html
FROM
- 후속 지침을 사용하여 사용자 정의 이미지를 생성할 기본 이미지를 정의합니다.COPY
- 현재 디렉토리의 모든 파일과 디렉토리를 이미지 파일 시스템 대상/usr/share/nginx/html
에 복사합니다.
Nginx 이미지 사용에 대해 자세히 알아보려면 Docker 허브 Nginx 공식 이미지에서 이미지 생성 및 컨테이너 실행에 대한 자세한 정보를 제공합니다.
Nginx 이미지 빌드
애플리케이션의 Nginx 이미지를 빌드하려면 다음 명령을 사용하여 host-ip:latest
태그가 있는 이미지를 생성합니다.
~/WebstormProjects/docker-host-ip$ docker build --tag host-ip:latest .
이 명령은 Dockerfile
의 명령을 순차적으로 실행합니다. 프로세스는 아래와 같이 터미널 창에서 볼 수 있습니다.
=> CACHED [1/2] FROM docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23 0.0s
=> => resolve docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c374086 0.2s
=> [2/2] COPY . /usr/share/nginx/html
컨테이너 실행
이 섹션에서는 실행 중인 컨테이너에서 호스트의 IP 주소를 확인하려고 합니다. 실행 중인 컨테이너가 없으므로 먼저 다음 명령을 사용하여 컨테이너를 실행해야 합니다.
~/WebstormProjects/docker-host-ip$ docker run --name host-ip-service -d -p 8000:80 host-ip:latest
이 명령은 컨테이너의 포스트 80에서 수신 대기하도록 호스트의 포트 8000을 노출하는 host-ip-service
라는 컨테이너를 실행합니다. 응용 프로그램의 내용을 보려면 브라우저에서 localhost:8000
(http://localhost:8000/)에 요청하면 임의의 텍스트가 포함된 웹 페이지가 표시됩니다.
Docker 컨테이너 내부에서 Docker 호스트의 IP 주소 가져오기
실행 중인 컨테이너에서 명령을 실행하려고 하므로 다음 명령을 사용하여 Docker 컨테이너에 bash합니다.
docker exec -it host-ip-service /bin/sh
출력:
/ #
컨테이너 host-ip-service
가 실행 중인 도커 호스트의 IP 주소를 얻으려면 다음 명령을 입력하고 키보드에서 Enter 버튼을 누릅니다.
/ # /sbin/ip route|awk '/default/ { print $3 }'
출력:
172.17.0.1
컨테이너의 기본값인 Docker 브리지를 사용하고 있으므로 호스트가 연결된 네트워크의 IP 주소 대신 브리지의 IP 주소인 172.17.0.1
을 가져옵니다.
결론
이 자습서에서는 Nginx 애플리케이션을 활용하여 컨테이너 내부에서 Docker 호스트의 IP 주소를 가져오는 방법을 배웠습니다. 컨테이너가 실행되는 위치에 따라 동일한 목표를 달성하는 다른 방법이 있으며 요구 사항을 충족하는 접근 방식을 자유롭게 사용해야 합니다.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub