출처: 시작하세요! 도커/쿠버네티스 - 컨테이너를 외부에 노출
Container는 VM과 마찬가지로 가상 IP주소를 할당받으며 기본적으로는 Docker NAT IP인 172.17.0.x를 할당받는다.
만약 ifconfig 명령어를 찾을 수 없다고 뜬다면 apt-get update, apt-get install net-tools 명령어를 차례대로 실행시킨 후 ifconfig 명령어를 사용한다.
root@86058c0bec67:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 14092 bytes 20792420 (20.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4183 bytes 232275 (232.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
위에서 조회된 interface는 eth0과 lo 이다. 만약 Docker container에 접근하고 싶다면 eth0의 IP, Port를 Container를 띄운 host의 IP, Port에 바인딩 해야한다. 바인딩을 하려면 -p option을 이용하면 된다.
docker run -it --name webserver -p 80:80 ubuntu:14.04
host의 80과 container의 80 이 잘 바인딩 됐는지 확인하기 위해 간단하게 apache web server를 설치해서 service를 시작해보자. container에서 아래 명령어를 입력해준다.
apt-get update
apt-get install apache2 -y
service apache2 start
그리고 127.0.0.1로 접속해보면 apache2 ubuntu default page를 만날 수 있다.
내부적으로 일어난 일을 정리해보면 아래와 같다.
- host ip의 80 port 접근
- 해당 접근을 container의 80 port로 포워딩
- apache2 web server에 접근
'Framework and Tool > Docker' 카테고리의 다른 글
Docker network (0) | 2023.06.12 |
---|---|
Docker volume (0) | 2023.06.11 |
Container application example (0) | 2023.06.10 |
Container 생성 및 삭제 (0) | 2023.06.03 |
Image와 Container (0) | 2023.05.31 |
댓글