elevne's Study Note

Docker/Kubernetes (4: 도커 컨테이너 통신) 본문

ETC/Docker

Docker/Kubernetes (4: 도커 컨테이너 통신)

elevne 2023. 1. 21. 20:22

이전 시간에는 도커 명령어를 활용하여 컨테이너를 생성 및 삭제하는 법에 대해서만 알아보았는데, 이번에는 컨테이너를 생성하고 직접 접근하는 방법에 대해 알아보았다. 이전 시간에 사용해본 아파치는 웹 서버 기능을 제공하는 소프트웨어이다. 아파치가 동작 중인 서버에 파일을 두면 해당 파일을 웹 사이트 형태로 확인할 수 있는 것이다.

 

 

 

이전 시간과 똑같은 방식으로 컨테이너를 생성하고 실행하게 된다면 웹 사이트의 동작을 확인할 수 없을 것이다. 왜냐하면 컨테이너가 컨테이너 외부에서 접근이 불가능한 상태로 실행되기 때문이다. 이를 가능하게끔 하기 위해서는 설정이 필요한데, docker run 커맨등 옵션 형태로 붙여준다. 

 

 

 

우선 포트번호를 설정해준다. 아파치는 서버에서 정해둔 포트(80번 포트)에서 웹 사이트에 대한 접근을 기다리다가 사용자가 이 포트를 통해 접근해 오면 요청에 따라 웹 사이트 페이지를 제공한다. 하지만, 컨테이너 속에서 실행 중인 아파치는 외부와 직접 연결되어 있지 않았기 때문에 외부에서 접근할 수 없는 것이다. 그래서, 컨테이너를 실행 중인 물리적 컴퓨터가 외부의 접근을 대신 받아 전달해주도록 하는 것이다. 이 옵션은 -p 뒤에 설정해주며, 호스트의 포트번호, 컨테이너의 포트번호를 순서대로 적어주면 된다. 아래는 하나의 예시이다.

 

 

 

-p 8080:80

 

 

 

또, 컨테이너를 사용하면 여러 개의 웹 서버를 함께 실행할 수 있다. 이러한 경우 호스트 포트 번호를 모두 같은 것으로 사용하면 어떤 컨테이너로 가야할 요청인지 구분할 수 없기 때문에 각 컨테이너에 각기 다른 호스트 포트 번호로 설정해준다. (컨테이너 포트번호는 겹쳐도 상관없다) 그럼 이제 다시 한 번 아파치 컨테이너를 만들고 실행해본다.

 

 

 

docker run --name apache -d -p 8080:80 httpd

 

 

 

apache 라는 이름의 컨테이너를 백그라운드로(-d), 호스트의 포트 8080을 컨테이너 포트 80으로 포워딩하여(-p 8080:80) httpd 라는 이름의 이미지지를 활용하여 생성한다. docker ps 명령어를 통해 실행 중인 컨테이너의 정보를 확인해볼 수 있다. 잘 실행되어 있는 것을 확인하고 컴퓨터에서 localhost:8080 주소로 들어가보면 아파치 기본 시작화면이 보이는 것을 확인할 수 있다.

 

 

 

result

 

 

 

이제 다시 아래 명령어로 컨테이너를 종료해준다.

 

 

 

docker stop apache

 

 

 

그 후 rm 커맨드로 apache 컨테이너를 삭제한다.

 

 

 

docker rm apache

 

 

 

docker ps -a 커맨드로 모든 존재하는 컨테이너를 확인하며 잘 삭제되었는지 확인해볼 수 있다.

 

 

 

 

Reference:

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