컨테이너의 통신

728x90
반응형

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

 

  • 이전 장에서는 컨테이너를 만들고 곧바로 삭제했지만, 이번 장에서는 아파치를 사용해 웹 브라우저를 통해 컨테이너에 접근해 웹 사이트가 동작하는지 확인한다.
  • 웹 브라우저를 통해 컨테이너 접근이 가능하게 하기 위해 docker run 커맨드에 옵션 형태로 설정한다.

 

컨테이너와 통신

  • 웹 브라우저를 통해 컨테이너에 접근하려면 포트를 설정해야 한다.
  • 아파치는 서버에서 정해둔 포트(80번 포트)에서 웹 사이트에 대한 접근을 기다리다가 사용자가 이 포트를 통해 접근해 오면 요청에 따라 웹 사이트의 페이지를 제공한다. 하지만 컨테이너 속에서 실행 중인 아파치는 외부와 직접 연결되지 않았기 때문에 외부에서 접근할 수 없다. 그래서 컨테이너를 실행 중인 물리적 컴퓨터가 외부의 접근을 대신 받아주어야 한다.
  • 컨테이너를 실행 중인 호스트 컴퓨터의 포트(ex. 8080번 포트. 다른 소프트웨어가 사용하는 포트와 겹치지만 않게 하면 아무 포트로 해도 상관 없음)와 컨테이너의 80번 포트를 연결한다.
    • -p 8080:80
  • 컨테이너를 사용하면 여러 개의 웹 서버를 함께 실행할 수 있다.
  • 호스트 포트 번호를 모두 같은 것으로 하면 어떤 컨테이너로 가야 할 요청인지 구분할 수 없기 때문에 호스트의 포트 번호를 겹치지 않게 설정해야 한다.
    • ex. container A의 호스트 포트 8080, container B의 호스트 포트 8081

 

 

[실습] 통신이 가능한 아파치 컨테이너 생성

 

실습 목표

  • 포트 번호 설정을 추가해서 외부에서 접근할 수 있는 아파치 컨테이너를 만든다.
  • 컨테이너를 생성하고 실행한 다음, 웹 브라우저에서 http://localhost:8080 에 접속해 아파치의 초기 화면이 나타나는지 확인한다.
  • 실습을 마치고 컨테이너를 종료하고 삭제한다.

 

생성할 컨테이너 정보

  • 컨테이너 이름 : zw_apache
  • 이미지 이름 : httpd
  • 포트 설정 : 8080:80

 

실습

docker run --name zw_apache -d -p 8080:80 httpd
docker ps

 

아파치 이미지(httpd)를 사용해 zw_apache라는 이름의 컨테이너를 생성하고 실행한다. 이전 장에서 httpd 이미지를 다운로드 받았으므로 pull과 관련된 정보는 출력되지 않는다.

 

ps 커맨드를 사용하면 zw_apache라는 이름의 컨테이너가 생성된 것을 확인할 수 있다. Status를 보면 Up으로 실행 중인 것을 확인할 수 있다.

 

현재 웹 브라우저에서 http://localhost:8080 으로 접속하면 It works! 라는 아파치의 초기 화면이 나타난다.

 

 

docker exec -it zw_apache bash
cd htdocs
ls

 

index.html 파일을 편집해서 다른 화면이 나오도록 약간만 바꿔보자.

 

컨테이너의 배쉬 쉘로 접속해서 htdocs 디렉토리로 이동하면 index.html 파일이 존재한다.

 

nano index.html

 

nano 에디터로 index.html 파일을 열고, 블로그 주인장의 간절한 소망이 담긴 내용으로 수정하고 저장한 다음 에디터를 종료한다.

Ctrl + x -> y -> enter 를 누르면 된다.

 

혹시 nano 에디터가 실행되지 않는다면 다음 명령어들을 입력해 nano 에디터를 설치한다.

apt update
apt install nano

 

 

웹 브라우저를 새로 고침하면 위 그림과 같이 블로그 주인장의 간절한 소망이 담긴 내용이 출력되게 된다.

 

exit

docker stop zw_apache

 

exit 명령을 입력해 bash shell 에서 탈출한다.

 

zw_apache 컨테이너를 중지시킨다.

 

 

docker ps -a 커맨드를 입력하면 zw_apache 컨테이너의 status가 Exited로 중지된 상태인 것을 확인할 수 있다.

docker desktop에서도 확인해보면 zw_apache 컨테이너의 상태가 Exited로 변경된 것을 확인할 수 있다.

 

 

docker rm zw_apache
docker ps -a

 

zw_apache 컨테이너를 삭제한다. ps -a 커맨드를 입력하면 zw_apache가 삭제된 것을 확인할 수 있다. docker desktop에서도 zw_apache 컨테이너가 삭제된 것을 볼 수 있다.

 

 

728x90
반응형