CKA 공부 32일차

Docker Networking

  • 도커의 네트워크에 대해 공부해보자.

  • eth0 인터페이스는 로컬 네트워크에 연결한다.

  • 컨테이너를 구동하면 특정 옵션을 줄 수 있는데 docker run --network none nginx 옵션이다.

  • 이렇게 생성된 도커 컨테이너의 네트워크는 완벽히 독립된다.

  • 컨테이너는 호스트 네트워크에 붙는다.

  • 컨테이너와 호스트 사이에는 네트워크 독립적이지 않다.

  • 80포트로 웹 애플리케이션을 컨테이너로 배포한다면, 호스트 주소에 80포트에 매핑된다.

  • 80번 포트로 또다른 도커를 구동한다고 하더라도 같은 호스트 내에서 같은 포트로 동작하게 되므로 이 컨테이너는 실행될 수 없다.

  • 도커 네트워크인 브릿지는 어떻게 동작할까?

  • 도커가 호스트에 구동되면 내부 private 네트워크인 브릿지가 생성된다.,

  • docker network ls를 ㅇ비력하면 bridge를 확인할 수 있다.

  • 도커의 네트워크를 브릿지라고 부르며 호스트 네트워크는 docker0라는 이름으로 생성한다.

  • ip link 명령어를 수행하면 docker0라는 네트워크를 확인할 수 있다.

  • 브릿지는 호스트로의 일종의 인터페이스와 같은 역할을 담당한다.

  • 컨테이너가 생성되면 도커는 네트워크 네임스페이스를 생성한다.

  • 도커는 어떻게 컨테이너에게 네트워크 네임스페이스를 브릿지 네트워크에 붙일 수 있을까?

  • 여기서 컨테이너와 네트워크 네임스페이스는 같은 것을 의미한다.

  • 이전 시간과 마찬가지로 가상 케이블을 생성한다.

  • 케이블의 형태는 컨테이너와 docker0(bridge)로 연결되어진 형태이다.

  • 먼저 한쪽의 케이블이 docker0에 붙게 되고 다른 한쪽은 컨테이너에 붙게된다.

  • ip -n {docker_name} link로 입력하면 나오게 된다.

  • ip -n {docker_nmae} addr을 입력하면 도커 컨테이너의 IP도 확인이 가능하다.

  • 도커 컨테이너가 생성되면 새로운 네트워크 네임스페이스를 생성해 이름을 붙여주고, 가상 케이블을 만들어 Bridge와 컨테이너를 연결한다.

  • 그러나 호스트 외부에서 도커 컨테이너의 IP로 접근하려고 해도 실패한다.

  • 이는 호스트에서 받아주는 네트워크와 Bridge의 포트를 연결해줘야하기 떄문인데, 이를 위해 다음과 같은 옵션을 줄 수 있다.

  • docker run -p 8080:80 nginx

  • 외부로부터 들어오는 8080포트를 컨테이너 내부의 80포트와 연결하겠다는 옵션이다.

  • 즉 호스트의 8080포트로 접근하면 컨테이너와 연결될 수 있다.





© 2022. by minkuk

Powered by minkuk