이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)
우분투 컨테이너를 생성하고 접속을 해본 다음에 ifconfig
명령을 통해 ip가 어떻게 되어있는지 확인해보자. 그냥 하면 ifconfig라는 명령을 찾을 수 없다고 나오는데 이는 아직 아무것도 설치되어있지 않은 상태라서 그렇다.
$ apt-get update
$ apt-get install net-tools
net-tools를 설치하고 ifconfig를 해보면 잘 실행되어진다.
도커는 컨테이너에 172.17.0.X
의 IP를 순차적으로 할당해준다. 참고로 밑에 lo는 로컬 호스트를 의미한다.
외부에 컨테이너의 애플리케이션을 노출하기 위해서는 eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 한다. 이미 생성한 컨테이너가 있으면 삭제하고 다시 설정해야 한다.
$ docker run -it --name mywebserver -p 80:80 ubuntu:18.04
위 명령을 실행한 다음, 컨테이너 내부로 들어와서 아파치 웹서버를 설치해주자. 참고로 아파치 웹서버는 80번 포트에서 동작한다. 도커 컨테이너 80번을 열어둔것은 이러한 이유이기 때문이다.
$ apt-get update
$ apt-get install apache2
$ service apache2 start
$ docker ps -a
명령을 통해 포트 설정이 제대로 되었는지 확인할 수 있다.
AWS 보안그룹에 가서 80번 포트가 열렸는지 확인해보고 퍼블릭 ip로 접속해보자.
포트포워딩을 이해하지 못한다면 이게 어떻게 연결되는지 의아할 수도 있겠다.
흔히 IP는 퍼블릭 아이피와 사설 아이피로 나눠서 구분된다. 공유기를 쓰고 있다면 공유기에 접속하는거는 퍼블릭 아이피이고 공유기가 나눠주는거는 사설 아이피이다. 그리고 사설 아이피를 쓰고 있는 컴퓨터에서 포트를 열어주더라도 외부에서는 접근할 수 없다. 그래서 퍼블릭아이피:포트번호
와 사설아이피:포트번호
를 서로 연결해주는 작업을 하게 되는데 이를 포트 포워딩이라고 한다.
도커 컨테이너도 마찬가지이다. AWS 보안그룹에서 80번을 열어두더라도 도커 컨테이너가 호스트와 포워딩이 되어있지 않으면 접근할 수 없다. 접근이 가능하게 하려면 위와 같은 작업을 해줘야 한다.