Skip to Content
Suffering builds character
아카이브25.devopsDocker특징1.컨테이너 관리10.컨테이너를 통해 웹 서버 실행

10.컨테이너를 통해 웹 서버 실행

일반적으로 도커는 웹 서버나 DB같은 애플리케이션을 실행하는 것이 주 목적이기 때문에,

컨테이너를 한 번 생성한 이상 가급적 중지하지 않고 지속적으로 유지하는 방식이 주된 사용 형태라고 볼 수 있음

1. 실습용 예제를 받아와서 컨테이너 실행

ch02-hello-diamol-web 이미지를 받아서 컨테이너 생성 및 실행

terminal
docker run --detach --publish 8080:80 diamol/ch02-hello-diamol-web

--detach 해당 컨테이너를 백그라운드에서 실행

--publish 컨테이너의 포트(80)를 호스트 컴퓨터에 공개(8080)

→ 만약 사용자가 아래와 같이 8080 포트로 트래픽 요청 시, 도커가 호스트 컴퓨터를 통해 들어오는 트래픽을 토대로, 도커 내부에 실행된 80 포트의 웹 서버에 트래픽을 전달해줌

HTTP
{EC2 서버의 Public IP 주소}:8080

실행 결과

terminal
Unable to find image 'diamol/ch02-hello-diamol-web:latest' locally latest: Pulling from diamol/ch02-hello-diamol-web f84cab65f19f: Pull complete 87259b7246e5: Pull complete 3e84dc11ea39: Pull complete d632c8441234: Pull complete 0fcb24848396: Pull complete af7e90cfff46: Pull complete Digest: sha256:fe5a4c954fe2df5cadeea304ab632533f8ece9e31bd219ea22fdbf8b597571eb Status: Downloaded newer image for diamol/ch02-hello-diamol-web:latest e1def7150dee2f848e4ed80e51777b007d89857c0b8a9d7c43da73b5b104d989

2. Public IP 주소를 통해 웹 서버로 요청 전송

아래와 같이 EC2의 퍼블릭 IP 주소로 요청 시 도커 컨테이너 내부에서 실행된 웹 서버가 페이지를 응답함

3. 실행 중인 컨테이너 목록 조회

terminal
docker ps

→ docker ps 명령어와 같이 -a 옵션을 추가하지 않을 경우 실행 중(Up)인 컨테이너만 조회됨

실행 결과

terminal
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1def7150dee diamol/ch02-hello-diamol-web "httpd-foreground" 18 seconds ago Up 16 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp objective_mendeleev

→ 컨테이너 내부에서 웹 서버(애플리케이션)가 실행 중이기 때문에 컨테이너 역시 중지(Exited)되지 않고 실행 중

4. 실행 중인 컨테이너의 상태 조회

docker stats {CONTAINER ID} 명령어를 통해 컨테이너의 상태를 확인할 수 있음

terminal
docker stats e1de

실행 결과

terminal
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e1def7150dee objective_mendeleev 0.01% 8.754MiB / 954.1MiB 0.92% 38.9kB / 29.9kB 2.39MB / 0B 109

→ 실시간으로 컨테이너의 CPU, 메모리, 네트워크, 디스크 사용량 등을 확인 할 수 있음

Last updated on