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
e1def7150dee2f848e4ed80e51777b007d89857c0b8a9d7c43da73b5b104d9892. 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