--- title: docker — 컨테이너 빌드·운영 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 애플리케이션과 필요한 환경을 하나의 이미지로 묶어 어디서든 같은 방식으로 실행하는 컨테이너 도구. tags: 프로그램, 컨테이너, docker --- **💬 "docker 명령어"** docker는 프로그램과 실행에 필요한 라이브러리·설정을 이미지라는 읽기 전용 패키지로 만들어, 어디서든 동일한 모양으로 실행되는 컨테이너로 띄웁니다. '내 컴퓨터에서는 되는데 서버에서는 안 돼'를 줄이는 대표 도구이며, 로그 수집기·DB·웹 서버 같은 부수 서비스도 컨테이너로 빠르게 띄울 수 있습니다. - **이미지**: 실행 환경과 코드가 담긴 읽기 전용 틀 - **컨테이너**: 이미지를 실제로 띄운 실행 중인 인스턴스 - **Dockerfile**: 이미지를 만드는 조리법(설치·복사·실행 명령) - **Compose**: 여러 컨테이너를 하나의 YAML로 함께 정의·기동 ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | docker build -t <이름>:<태그> . | 현재 폴더의 Dockerfile로 이미지 빌드 | | docker ps / docker ps -a | 실행 중 컨테이너 / 모든 컨테이너 목록 | | docker logs -f <컨테이너> | 컨테이너 로그 실시간 따라보기 | | docker exec -it <컨테이너> sh | 실행 중 컨테이너 안에 들어가기 | | docker compose up -d | Compose 정의대로 백그라운드 기동 | | docker compose down | Compose로 띄운 컨테이너·네트워크 정리 | ## 필수 명령어 조합 3가지 - `docker build -t app:1.0 . && docker run -p 8080:80 app:1.0` — 빌드 후 로컬에서 바로 확인 - `docker compose up -d && docker compose logs -f` — 서비스 묶음을 기동하고 로그 확인 - `docker images && docker system df` — 남은 이미지와 점유 용량 점검 **💬 "장애 알림 받았을 때 첫 대응 예시 만들어줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 컨테이너로 웹 서버 확인 공식 이미지를 받아 80번 포트로 띄워 봅니다. ``` docker run --rm -d --name web -p 8080:80 nginx:alpine docker ps ``` ### 로그와 진입 응답이 오는지 로그를 보고 컨테이너 안으로 들어갑니다. ``` docker logs web docker exec -it web sh ``` ### 정리 확인이 끝면 컨테이너와 사용하지 않는 이미지를 정리합니다. ``` docker stop web docker image prune -f ``` ## 실무에서는 이렇게 씁니다 ### 1. 로컬에서 서버 환경 재현 **상황** — 서버 전용 라이브러리 때문에 로컬에서 테스트가 안 되는 상황. ``` docker run --rm -it -v "$PWD":/work -w /work ubuntu:24.04 bash ``` **결과** — ubuntu:24.04 컨테이너 안에서 현재 폴더를 마운트한 채 명령을 실행할 수 있습니다. **포인트** — -v로 폴더를 연결하면 컨테이너를 지워도 파일은 그대로 남습니다. ### 2. DB를 컨테이너로 임시 기동 **상황** — 테스트용 DB를 서버에 설치하지 않고 짧게 써야 하는 상황. ``` docker run --rm -d --name testdb -e MYSQL_ROOT_PASSWORD=dev mysql:8 docker logs -f testdb ``` **결과** — compose 파일 없이도 환경 변수로 DB를 띄우고 로그로 준비 상태를 확인합니다. **포인트** — --rm은 컨테이너가 멈추면 자동 삭제되므로 임시 작업에 편리합니다. ### 3. 용량 폭발 정리 **상황** — 빌드를 반복하다 보니 디스크가 커져 이미지를 정리해야 하는 상황. ``` docker system df docker system prune -f ``` **결과** — 중지된 컨테이너·쓰지 않는 네트워크·매달린 이미지가 정리됩니다. **포인트** — 서버에서는 prune 전에 아직 필요한 볼륨이 없는지 docker volume ls로 확인합니다. ## 주의할 점 - 이미지 태그는 latest 대신 버전을 명시해 어떤 내용인지 알 수 있게 합니다. - 컨테이너에 비밀 값을 넣을 때는 환경 변수나 시크릿 파일로 전달하고 이미지에 굽지 않습니다. - host 네트워크(--network host)는 포트 충돌과 방화벽 우회 문제가 생길 수 있어 필요한 경우에만 사용합니다. ## 실제 실행 화면 서버에서 컨테이너 목록과 점유 용량을 확인하는 가상 예시입니다(실제 실행 결과 아님). ![docker 컨테이너 목록과 시스템 용량 확인 예시](https://games.cursorai.co.kr/assets/docker-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/dev/container/docker.html