# Docker 버전 확인docker --versiondocker version# Docker 시스템 정보docker info# Docker 디스크 사용량 확인docker system df
이미지 관리
이미지 조회 및 검색
# 로컬 이미지 목록docker imagesdocker image ls# 이미지 검색 (Docker Hub)docker search [IMAGE_NAME]
이미지 다운로드 및 삭제
# 이미지 다운로드docker pull [IMAGE_NAME]:[TAG]# 이미지 삭제docker rmi [IMAGE_ID]docker image rm [IMAGE_ID]# 사용하지 않는 이미지 모두 삭제docker image prune -a
이미지 빌드
# Dockerfile로 이미지 빌드docker build -t [IMAGE_NAME]:[TAG] .# 특정 Dockerfile 지정하여 빌드docker build -f [DOCKERFILE_PATH] -t [IMAGE_NAME]:[TAG] .# 캐시 없이 빌드docker build --no-cache -t [IMAGE_NAME]:[TAG] .
이미지 태그 및 푸시
# 이미지 태그 추가docker tag [IMAGE_ID] [NEW_IMAGE_NAME]:[TAG]# 이미지 푸시 (Docker Hub)docker push [IMAGE_NAME]:[TAG]
컨테이너 관리
컨테이너 실행
# 기본 실행docker run [IMAGE_NAME]# 백그라운드 실행docker run -d [IMAGE_NAME]# 포트 매핑하여 실행docker run -p [HOST_PORT]:[CONTAINER_PORT] [IMAGE_NAME]# 이름 지정하여 실행docker run --name [CONTAINER_NAME] [IMAGE_NAME]# 환경변수 설정docker run -e [KEY]=[VALUE] [IMAGE_NAME]# 볼륨 마운트docker run -v [HOST_PATH]:[CONTAINER_PATH] [IMAGE_NAME]# 인터랙티브 모드 (터미널 접속)docker run -it [IMAGE_NAME] /bin/bash# 컨테이너 종료 시 자동 삭제docker run --rm [IMAGE_NAME]# 조합 예시docker run -d -p 8080:80 --name myapp -v $(pwd):/app myimage:latest
컨테이너 조회
# 실행 중인 컨테이너 목록docker ps# 모든 컨테이너 목록 (중지된 것 포함)docker ps -a# 최근 생성된 컨테이너docker ps -l# 컨테이너 상세 정보docker inspect [CONTAINER_ID]
# 리소스 사용량 확인docker stats# 특정 컨테이너 통계docker stats [CONTAINER_ID]
볼륨 관리
# 볼륨 목록docker volume ls# 볼륨 생성docker volume create [VOLUME_NAME]# 볼륨 상세 정보docker volume inspect [VOLUME_NAME]# 볼륨 삭제docker volume rm [VOLUME_NAME]# 사용하지 않는 볼륨 모두 삭제docker volume prune
네트워크 관리
# 네트워크 목록docker network ls# 네트워크 생성docker network create [NETWORK_NAME]# 네트워크 상세 정보docker network inspect [NETWORK_NAME]# 컨테이너를 네트워크에 연결docker network connect [NETWORK_NAME] [CONTAINER_ID]# 컨테이너를 네트워크에서 분리docker network disconnect [NETWORK_NAME] [CONTAINER_ID]# 네트워크 삭제docker network rm [NETWORK_NAME]# 사용하지 않는 네트워크 모두 삭제docker network prune
Docker Compose
기본 명령어
# 서비스 시작 (백그라운드)docker-compose up -d# 서비스 시작 (포그라운드)docker-compose up# 서비스 중지 및 컨테이너 제거docker-compose down# 서비스 중지 및 볼륨까지 제거docker-compose down -v# 서비스 중지docker-compose stop# 서비스 시작docker-compose start# 서비스 재시작docker-compose restart
서비스 관리
# 실행 중인 서비스 확인docker-compose ps# 서비스 로그 확인docker-compose logs# 특정 서비스 로그 확인docker-compose logs [SERVICE_NAME]# 실시간 로그 확인docker-compose logs -f# 서비스 빌드docker-compose build# 캐시 없이 빌드docker-compose build --no-cache# 특정 서비스만 실행docker-compose up [SERVICE_NAME]# 서비스 스케일링docker-compose up -d --scale [SERVICE_NAME]=[N]
설정 파일 관리
# docker-compose.yml 검증docker-compose config# 실행 중인 서비스에서 명령 실행docker-compose exec [SERVICE_NAME] [COMMAND]
시스템 정리
# 중지된 컨테이너 모두 삭제docker container prune# 사용하지 않는 이미지 모두 삭제docker image prune -a# 사용하지 않는 볼륨 모두 삭제docker volume prune# 사용하지 않는 네트워크 모두 삭제docker network prune# 시스템 전체 정리 (컨테이너, 이미지, 네트워크, 캐시)docker system prune# 볼륨 포함 전체 정리docker system prune -a --volumes
Dockerfile 주요 명령어
# 베이스 이미지 지정FROM [IMAGE]:[TAG]# 작업 디렉토리 설정WORKDIR /app# 파일 복사COPY [SOURCE] [DEST]ADD [SOURCE] [DEST]# 명령 실행 (이미지 빌드 시)RUN [COMMAND]# 환경변수 설정ENV [KEY]=[VALUE]# 포트 노출EXPOSE [PORT]# 볼륨 마운트 포인트VOLUME [PATH]# 컨테이너 시작 시 실행할 명령 (덮어쓰기 가능)CMD ["executable", "param1", "param2"]# 컨테이너 시작 시 실행할 명령 (덮어쓰기 불가)ENTRYPOINT ["executable", "param1", "param2"]# 사용자 지정USER [USERNAME]# 빌드 인자ARG [NAME]=[DEFAULT_VALUE]# 레이블 추가LABEL [KEY]=[VALUE]# 헬스체크HEALTHCHECK CMD [COMMAND]
유용한 팁
이미지 크기 최적화
# 멀티 스테이지 빌드 사용FROM golang:1.20 AS builderWORKDIR /appCOPY . .RUN go build -o main .FROM alpine:latestWORKDIR /appCOPY --from=builder /app/main .CMD ["./main"]
# 메모리 제한docker run -m 512m [IMAGE_NAME]# CPU 제한docker run --cpus=".5" [IMAGE_NAME]# CPU 및 메모리 제한docker run -m 512m --cpus=".5" [IMAGE_NAME]
환경변수 파일 사용
# .env 파일 사용docker run --env-file .env [IMAGE_NAME]
컨테이너 자동 재시작 설정
# 항상 재시작docker run --restart=always [IMAGE_NAME]# 실패 시에만 재시작docker run --restart=on-failure [IMAGE_NAME]# 최대 재시작 횟수 지정docker run --restart=on-failure:3 [IMAGE_NAME]