Docker/Docker-Compose 주요 명령어 정리
컨테이너 시작 및 중지 (Container Lifecycle)
서비스의 생명주기를 관리하는 가장 기본적인 명령어들입니다.
아래 빌드 명령어를 별도로 작성했지만, docker-compose up -d --build 명령어 입력 시 이미지를 새로 빌드(build)한 후에 컨테이너를 시작(up)이 가능합니다.
명령어
설명
주요 사용 사례
docker-compose up -d
docker-compose.yml 파일에 정의된 모든 서비스를 백그라운드(-d)에서 생성하고 시작
최초로 프로젝트를 실행할 때
코드 변경 없이 단순히 중지했던 컨테이너를 다시 시작할 때
docker-compose down
up으로 생성된 컨테이너와 네트워크 등 모든 리소스를 중지하고 제거
서비스를 완전히 종료하고 정리할 때
새로운 설정을 적용하기 위해 기존 환경을 깨끗이 지우고 싶을 때
docker-compose down -v
down의 기본 기능에 더해, 데이터베이스 데이터 등이 저장되는 볼륨(volume)까지 영구적으로 삭제
개발 환경에서 데이터를 포함한 모든 것을 초기화하고 싶을 때
주의: 운영 환경에서는 데이터 유실 위험, 절대 사용하면 안 됩니다.
docker-compose restart <서비스이름>
특정 서비스(컨테이너)만 재시작
Nginx 설정 파일 등 코드 빌드가 필요 없는 설정을 수정한 후 해당 서비스만 가볍게 재시작하고 싶을 때
로그 및 상태 확인 (Monitoring & Status)
실행 중인 컨테이너의 상태를 확인하고 문제를 진단하기 위한 필수 명령어들입니다.
명령어
설명
주요 사용 사례
docker ps
현재 실행 중인 모든 Docker 컨테이너의 목록, ID, 상태, 포트 정보 등을 보여줍니다.
컨테이너가 정상적으로 실행되고 있는지 확인할 때
외부로 노출된 포트 번호를 확인할 때
docker-compose logs <서비스이름>
특정 서비스 컨테이너가 생성된 이후부터 현재까지의 모든 로그를 출력합니다.
에러 발생 후 원인을 파악하기 위해 전체적인 로그 기록을 검토할 때
docker-compose logs -f <서비스이름>
특정 서비스의 로그를 실시간(-f, follow)으로 계속해서 보여줍니다.
API 요청 등 특정 액션을 취했을 때 서버의 반응을 실시간으로 확인하며 디버깅할 때
이미지 및 빌드 관리 (Image & Build)
소스 코드 변경사항을 컨테이너에 적용할 때 사용하는 핵심 명령어입니다.
명령어
설명
주요 사용 사례
docker-compose up -d --build
컨테이너를 시작하기 전, Docker 이미지를 강제로 새로 빌드(build)하여 최신 코드를 반영
Java 코드, application.yml, package.json 등 소스 코드를 수정한 후 변경사항을 컨테이너에 적용하고 싶을 때
가장 중요한 명령어로, 코드 수정 후에는 반드시 사용해야 합니다.
docker-compose build <서비스이름>
특정 서비스의 이미지만 새로 빌드합니다. 컨테이너를 시작하지는 않습니다.
up 하기 전에 코드 빌드가 성공적으로 완료되는지 미리 확인할 때
컨테이너 내부 명령어 실행 (Execution & Debugging)
실행 중인 컨테이너 내부에 직접 들어가거나 명령을 내려 환경을 진단합니다.
명령어
설명
주요 사용 사례
docker-compose exec <서비스이름> <명령어>
실행 중인 컨테이너 내부에서 원하는 명령어를 실행합니다.
Nginx 설정 문법 검사: docker-compose exec nginx nginx -t
컨테이너 내 환경변수 확인: docker-compose exec app printenv
docker-compose exec <서비스이름> /bin/sh
해당 컨테이너의 셸(shell) 환경으로 접속합니다. (배포용 이미지에 따라 /bin/bash일 수도 있습니다.)
컨테이너 내부 파일 구조를 직접 확인하거나 여러 명령어를 연속적으로 실행하며 심층 디버깅을 할 때
서버 운영 시 up -d --build(코드 변경 시), down(정리), logs -f(실시간 확인) 명령어는 가장 빈번하게 사용됩니다. 3개는 기억하고 있는게 좋습니다.