도커로 동작하는 많은 소프트웨어들이 네트워크를 사용하기 때문에 도커를 사용하기 위해서는 네트워크에 대한 지식이 있어야 한다.
선수강의
WEB1
https://youtube.com/playlist?list=PLuHgQVnccGMDZP7FJ_ZsUrdCGH68ppvPb
WEB1- HTML & Internet
www.youtube.com
Home server
https://youtube.com/playlist?list=PLuHgQVnccGMA52uRBmSwqcvtI5IMoFclJ
WEB2-Home server
www.youtube.com
웹 서버를 사용하기 위해서는 웹 브라우저가 설치된 컴퓨터와 웹 서버가 설치된 컴퓨터, 총 2대가 필요하다.
웹 페이지를 파일로 만들어서 저장 장치의 특정 디렉토리에 위치시켜야 하는데, 데이터가 저장된 공간을 파일시스템이라고 부른다.
파일 시스템 내에 파일을 위치시키고 웹 서버에게 누군가 웹 페이지(index.html)를 요청하면 해당 디렉토리(/usr/local/apache2/htdocs/)에서 찾도록 설정한다.
컴퓨터에는 65535개의 포트라는 개념이 있어서 컴퓨터에 설치되어 있는 여러 소프트웨어들을 네트워크적으로 구분해준다.
우리의 웹 서버는 80번 포트에서 접속을 대기하고 있도록 설정되어 있다.
웹 서버가 설치된 컴퓨터의 주소는 example.com이다.
접속을 시작하면 http://example.com:80/index.html을 을 주소창에 입력하고 엔터를 누른다.
웹 브라우저는 example.com에 80번 포트로 입력하는 것이다.
80번 포트에는 웹 서버가 대기중이기 때문에 웹 서버로 요청이 전달된다.
웹 서버는 /usr/local/apache2/htdocs/에서 index.html 파일을 찾는다.
index.html 파일을 읽어서 웹 브라우저에게 코드를 전달하면 이 과정이 끝난다.
이번에는 도커를 이용해서 웹 서버를 사용해보자.
지금까지는 컴퓨테어 웹 서버를 직접 설치했지만 도커를 이용하면 웹 서버가 컨테이너에 설치된다.
이 컨테이너가 설치된 운영 체제를 바로 도커 호스트라고 부른다.
하나의 도커 호스트에는 여러 개의 컨테이너가 만들어질 수 있다.
컨테이너 호스트 모두 독립적인 실행환경이기 때문에 각자 독립적인 포트와 파일 시스템을 가지고 있다.
웹 브라우저로 웹 서버에 접속을 시작하면 호스트와 컨테이너가 연결이 끊겨 있기 때문에 접속되지 않는다.
따라서 호스트의 80번 포트와 컨테이너의 80번 포트를 연결하면 이 문제를 해결할 수 있다.
컨테이너를 실행하는 명령을 docker run -p 80:80 httpd 로 바꾸면 컨테이너와 호스트의 포트가 연결된다.
앞의 80은 호스트의 포트이고 뒤의 80은 컨테이너의 포트이다.
이렇게 설정을 해주면 호스트에 80번으로 들어온 신호가 컨테이너에 80번 포트로 전송된다.
이렇게 연결된 포트로 신호를 전달하는 것을 포트 포워딩이라고 한다.
그러면 요청 신호가 서버로 전송이 되고 나머지 과정은 이전과 같다.
만약 접속 경로가 8000번으로 바뀌었다면 명령을 docker run -p 8000:80 httpd으로 수정하면 된다.
먼저 도커 데스크탑에서 설정해보자.
httpd 이미지에서 run을 누른 뒤 옵션을 설정한다.
이름은 ws2로 설정하고 포트를 설정하면 되는데, 컨테이너에 80번 포트는 이미지를 만든 사람이 이미지에 설치되어 있는 프로세스에 접속할 때는 80번 포트로 들어오도록 설정한 것이다.
로컬호스트는 8080이라고 하면 8080번 포트로 접속했을 때 컨테이너에 80번 포트로 보내겠다는 뜻이다.
리눅스에서 설정할 때는 -p 옵션을 이용하면 된다.
--name 옵션을 사용해 이름은 ws2로, -p 옵션으로 로컬호스트 8080번 포트로 접속했을 때 컨테이너에 80번 포트로 전송한다.
잘 만들어진 것을 확인할 수 있다.
파이어폭스에서 localhost:8080/index.html로 접속하면 index.html 화면을 확인할 수 있다.
물론 index.html 파일을 위에 지정한 위치에 잘 저장하면 확인할 수 있다.