본문 바로가기
DevelopmentTools/Docker

[생활코딩] Docker 입문수업 Day-2

by 수짱수짱 2022. 5. 29.

5. 네트워크

 

도커가 웹 서버를 사용하는 방법?

도커를 이용하면 웹서버가 컨테이너에 설치된다. 컨테이너가 설치된 운영체제 = 도커 Host

하나의 도커 host에는 여러 개의 컨테이너가 만들어질 수 있다.

컨테이너, 호스트는 모두 독립적인 실행환경이기 때문에 각각 독립적인 포트와 파일시스템을 가진다.

 

사용자가 웹서버를 이용하기 위해서 host의 80번 포트와 container의 80번 포트를 연결해주어야 한다.

=> docker run -p 80:80 httpd

앞의 80은 host의 포트, 뒤의 80은 container의 포트번호이다.

이렇게 연결해주면 호스트의 80번에 들어온 신호가 컨테이너의 80번 포트로 전송된다.

이렇게 연결된 포트로 신호를 전달하는 것 = > 포트포워딩( port forwarding ) 

 

만약 접속 경로가 8000번 포트로 바뀐다면? docker run -p 8000:80 httpd

도커를 이용하여 웹 서버를 이용하는 방법

 

웹 서버를 직접 이용하기 위해서는 2대의 컴퓨터가 필요하다. 한 대엔 웹브라우저, 다른 한 대엔 웹서버가 설치된다.

웹 페이지를 파일로 만들어서 저장장치의 특정 디렉토리에 위치 시켜야 한다

데이터가 저장된 공간 = 파일시스템

웹 서버를 직접 이용하는 방법

 


6. 명령어 실행

 

 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

명령을 전달하고 싶은 컨테이너 이름, 실행시키고 싶은 명령어를 입력

 

컨테이너와 지속적으로 연결을 유지하면서 계속해서 명령을 전달하고 싶을 때 본(or 배쉬) 쉘을 실행시켜 수행할 수 있다.

=> docker exec -it ws /bin/sh (or bash)

(i는 ineractive, t는 tty라는 옵션을 이용한 것)

 

*쉘이란 사용자가 입력한 명령을 쉘 프로그램이 받아서 운영체제에게 전달한다.

 

아파치 이미지는

/usr/local/apache2/htdocs/ 에사용자가 요청한 웹 페이지를 보관함.

에디터를 통해 안에 있는 index.html을 수정할 수 있다.

 

 


7. 호스트와 컨테이너의 파일시스템 연결

 

도커 안의 파일을 직접 수정하는 것은 불편하고 위험한 일이 발생할 수 있다.

만약, 직접 index.html 파일을 수정했는데 컨테이너가 사라진다면 수정한 파일까지 같이 삭제되기 때문이다.

컨테이너는 필요할 때 언제든지 생성했다가 언제든지 지울 수 있기에 사용하는 것이라 이런 상황을 염두해야 한다.

 

host의 파일 시스템과 컨테이너의 파일 시스템을 연결하고 host쪽에서 수정이 이루어졌을 때 컨테이너의 파일 시스템에 반영되도록 한다면 컨테이너가 날아가도 코드는 날아가지 않으므로 안전하게 개발할 수 있지 않을까. 또한, 파일을 버전관리 하기에도 쉬울 것이다.

=> 실행 환경은 컨테이너에게 맡기고 파일을 수정하는 작업은 호스트에서 진행하도록 하는 방법을 사용하자

 

docker run -p 8888:80 -v ~/Desktop/htdocs:/usr/local/apache2/htdocs/ httpd

컨테이너를 만들면서 컨테이너의 파일시스템과 host의 파일 시스템을 연결

결과적으로 연결된 호스트의 파일을 수정하면 컨테이너 안의 파일도 같이 수정된다.

 

'DevelopmentTools > Docker' 카테고리의 다른 글

[Linux] apache-tomcat 연동  (0) 2022.05.30
[생활코딩] Docker 입문수업 Day-1  (0) 2022.05.28