728x90
📌 1. Docker Events로 도커 작업 추적하기
도커에서는 컨테이너에서 일어나는 각종 상황들(컨테이너 생성, 이미지 실행, 파일 추가/삭제 등)을 이벤트라고 한다. 이를 실시간으로 확인하려면 다음 명령어를 사용한다:
docker events
특정 항목만 필터링하려면 --filter 옵션을 사용:
docker events --filter 'type=image'
이 명령어를 실행해 둔 상태에서 다른 창에서 컨테이너를 실행하면 그 이벤트가 기록됨:
docker run --name ubunt ubuntu:18.04
→ 이 실행 로그는 첫 번째 터미널 창에 표시된다.
📦 2. 컨테이너 리소스 현황 보기
현재 도커가 사용하는 이미지, 컨테이너, 볼륨 등의 자원을 확인하려면:
docker system df
결과는 다음 정보를 포함한다:
- TYPE: 이미지, 컨테이너, 볼륨 등
- TOTAL: 전체 개수
- ACTIVE: 현재 활성화된 항목
- SIZE: 실제 사용된 공간
- RECLAIMABLE: 삭제 가능한 공간
🔍 3. cAdvisor로 컨테이너 모니터링
cAdvisor는 Google이 만든 컨테이너 리소스 실시간 모니터링 도구다. 하나의 컨테이너만 볼 수 있다.
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
🔹 --detach=true 대신 -d로 간단히 표현 가능
🔹 여러 컨테이너를 동시에 모니터링하려면 Prometheus, Kubernetes 등의 도구를 사용해야 한다.
🧱 4. Dockerfile 작성법과 이미지 생성
도커 이미지를 만드는 대표적인 방식은 Dockerfile을 사용하는 것.
🧾 Dockerfile 기본 명령어
명령어 | 설명 |
FROM | 베이스 이미지 설정 |
RUN | 이미지 생성 시 명령 실행 |
WORKDIR | 작업 디렉터리 지정 |
ENV | 환경 변수 설정 |
EXPOSE | 포트 개방 |
ADD, COPY | 파일 복사/추가 |
ARG | 빌드 시 인자 설정 |
ENTRYPOINT | 실행 시 반드시 실행될 명령 |
CMD | 기본 실행 명령 (1개만 가능) |
💡 예시
FROM ubuntu:latest
RUN apt update && apt install -y nginx
WORKDIR /app
COPY . /app
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
빌드 & 실행:
docker build -t my_nginx .
docker run -d -p 8080:80 my_nginx
📦 5. Multi-Stage Build로 이미지 용량 줄이기
앱을 빌드할 때 개발용 이미지(golang 등)와 운영용 이미지(alpine 등)를 두 단계로 나눠서 빌드하는 방법.
예시
# 1단계: 빌드용
FROM golang
ADD main.go /root
WORKDIR /root
RUN go build -o mainApp main.go
# 2단계: 실행용 (가볍게)
FROM alpine:latest
WORKDIR /root
COPY --from=0 /root/mainApp .
CMD ["./mainApp"]
이렇게 하면 최종 이미지가 훨씬 작아짐 (수백 MB → 수십 MB).
🌐 6. Node.js, Express, React, Flask와의 연동
✅ Node.js
- 자바스크립트 기반의 서버 플랫폼
- 비동기 처리 + 가볍고 빠름
- Apache 없이도 웹 서버 역할 가능
✅ Express.js
- Node.js용 웹 프레임워크
- API 서버 구축 시 유용
- JSP나 Spring 같은 역할
✅ React
- 프론트엔드 웹 프레임워크
- PHP, JSP를 대체하는 구조
- 실행 시 Node.js도 자동 실행됨
✅ Flask (파이썬 웹 프레임워크)
- Django보다 가볍고 간단한 Python용 웹 서버
- .html 파일을 불러와 웹 페이지 구성 가능
- 확장 기능으로 다양한 인증, DB 연동 기능도 사용 가능
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
🔗 웹 프레임워크 관계 요약
- Node.js: 서버 역할 (Apache 대체)
- Express: Node.js용 웹 프레임워크
- React: 사용자 인터페이스 구성 (프론트엔드)
- Flask: Python 기반 백엔드 서버
💡 웹 브라우저는 .html만 직접 해석 가능. .js, .php 등은 서버에서 렌더링*해 html로 전송함
*렌더링: 코드 결과를 html로 변환해 사용자에게 출력하는 과정
'네트워크 > 클라우드' 카테고리의 다른 글
🐳 Docker Swarm 완전정복: 실습과 개념 총정리 (0) | 2025.05.20 |
---|---|
🐳 Docker 이미지 태그와 리소스 할당 완벽 정리 (1) | 2025.05.19 |
🐳 Docker 이미지와 컨테이너 관리 개념 정리 (1) | 2025.05.14 |
☁️ Docker와 Kubernetes 완전 정복! (0) | 2025.05.13 |
☁️ 클라우드 기반 Hadoop 분산 시스템 정리 (1) | 2025.05.12 |