도커의 네트워크를 알기 위해서는 먼저 기본적인 네트워크 원리를 알아야 한다.
위 그림을 보면 두대의 컴퓨터가 있다.
한 컴퓨터에는 웹브라우저가 설치되어있고 한 컴퓨터에는 웹서버가 설치되어 있다.
웹서버에서는 웹페이지를 파일로 만들어서 저장창치에 특정 디렉토리에 위치시켜야한다.
여기서 File System = 데이터가 저장된 공간으로 보면 되겠다.
파일 시스템 안에 /usr/local/apache2/htdocs 공간에
index.html을 위치시켰다고 해보자.
그리고 웹서버에게는 Client가 웹페이지를 요청하면
/usr/local/apache2/htdocs 디렉토리에서
index.html 파일을 찾으라고 설정을 해놓는다.
한편 컴퓨터에는 65535개의 포트가 있어서 이 포트가 소프트웨어들을
네트워크적으로 구분을 해준다.
포트가 없다면 컴퓨터로 접속이 들어왔을 때 누가 대응을 할지 알수가 없다.
현재 웹서버는 80번 포트에서 접속을 대기하도록 설정되어있다.
웹브라우저 주소창에 http://example.com:80/index.html을 입력하면
해당 주소에 접속을 할 때 80번 포트로 접속을한다.
80번 포트에는 웹서버가 대기하고 있기 때문에 웹서버로 요청이 전달된다.
그러면 웹서버는 /usr/local/apache2/htdocs 경로에 있는 index.html 파일을 찾는다.
해당 파일을 읽어서 웹브라우저에게 index.html 코드르 전달하면 이 과정은 끝이난다.
그렇다면 도커를 이용한다면 어떻게 될까.
도커를 이용하면 웹서버가 컨테이너에 설치가 된다
이 컨테이너에 설치된 운영체제를 Docker Host라고 한다.
하나의 Docker Host에는 여러개의 컨테이너가 만들어질 수 있다.
컨테이너, 호스트 모두 독립적인 실행환경이기 때문에
각자 독자적인 포트와 파일시스템을 가지고 있다.
만약 지금 환경에서 웹브라우저로 웹서버에 접속을 하면 접속이 가능할까?
불가능하다.
현재 컨테이너와 호스트에는 연결이 되어있지 않다.
호스트와 컨테이너의 80번 포트를 연결해주어야 한다.
이렇게 연결된 포트로 신호를 전달하는 것을 포트포워딩이라고 한다.