도커 내에서 컨테이너를 생성하면 이 컨테이너는 외부에서 접근할 수 없고, 도커가 설치된 로컬 호스트에서만 접근할 수 있다. 외부에서 접근을 할 수 있도록 설정하기 위해서는 우리의 로컬 호스트 포트와 토커 컨테이너의 포트에 연결시켜주어야 한다. 이 과정을 포트 포워딩, 바인딩 등으로 부른다.
1. 컨테이너 IP 주소 확인하기
컨테이너의 IP 및 포트와 로컬 호스트의 IP 및 포트를 연결시키기 위해서는 당연히 컨테이너의 IP 주소를 알고 있어야 한다. IP 주소를 확인하기 위해서는 아래와 같은 작업을 수행하면 쉽게 확인이 가능하다.
$ 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 71152 bytes 104553816 (104.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21728 bytes 1347647 (1.3 MB)
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 24323 bytes 65138181 (65.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24323 bytes 65138181 (65.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
도커는 컨테이너에 172.17.0.X의 IP 주소를 순차적으로 할당한다. 만약 새로운 컨테이너를 생성하면 해당 컨테이너의 IP 주소는 172.17.0.3이 된다. 우리는 컨테이너에 Apache Web server를 설치해서 외부에 노출할 것이다. 아파치 웹 서버를 도커 허브에서 가지고와 포트를 연결시켜주자.
2. Apache web server
아파치는 기본적으로 80번 포트를 사용하고 있다. 그렇기 때문에 호스트의 임의의 포트와 컨테이너의 80번 포트를 연결시켜주는 작업을 수행해야된다.
# docker run -it --name webserver -p [hostport]:80 ubuntu:18.04
hostport를 만약 8888로 설정한다면 로컬호스트의 8888 포트와 컨테이너의 80번 포트를 포트포워딩 해주는 것이다. 포트 간 연결을 하기 위해서는 -p 인자를 사용해야만 한다. 호스트의 특정 IP를 사용하려면 255.255.255.255:8888:80 의 형태로 IP와 포트를 명시해야한다. 또한 여러 개의 포트를 연달아 외부에 개방하려면 연속으로 -p 인자를 사용해서 설정할 수 있다.
docker run -it -p 8888:8888 -p 255:255:255:255:7777:80 ubuntu:18.04
# apt-get update
# apt-get install apache2 -y
# service apache2 start
apache2를 직접 설치해도되고, 도커 허브에 이미지 중 httpd로 된 이미지를 설치받아서 진행해도된다. 이제 로컬호스트:8888로 외부에서도 도커에 접근할 수 있도록 된다. 여기에는 더 자세하게 설명해놓았다.
'Docker' 카테고리의 다른 글
[Docker] -e 란? 컨테이너 내에서 환경 변수 설정하기 (0) | 2022.03.04 |
---|---|
[Docker] -i, -t, -d 란? (0) | 2022.03.04 |
[Docker] ifconfig : command not found error (0) | 2022.03.04 |
[Docker] VSCode에서 Docker Container 접근하기 (0) | 2022.03.03 |
[Docker] 이미지(Image)를 Docker hub에 Push하기 (0) | 2022.03.03 |