docker images | 이미지 목록 |
docker pull <image> | 레지스트리에서 이미지 가져오기 |
docker pull <image>:<tag> | 특정 버전 가져오기 |
docker push <image> | 레지스트리에 이미지 푸시 |
docker rmi <image> | 이미지 삭제 |
docker rmi $(docker images -q) | 모든 이미지 삭제 |
docker image prune | 사용하지 않는 이미지 삭제 |
docker image prune -a | 모든 미사용 이미지 삭제 |
docker tag <image> <new-tag> | 이미지에 태그 지정 |
docker history <image> | 이미지 히스토리 표시 |
docker inspect <image> | 이미지 상세 정보 |
docker build -t <name> . | Dockerfile로 이미지 빌드 |
docker build -t <name>:<tag> . | 태그와 함께 빌드 |
docker build -f <file> . | 특정 Dockerfile로 빌드 |
docker build --no-cache . | 캐시 없이 빌드 |
docker build --build-arg KEY=val . | 인자와 함께 빌드 |
docker save -o <file>.tar <image> | 이미지를 tar 파일로 저장 |
docker load -i <file>.tar | tar 파일에서 이미지 로드 |
docker run <image> | 컨테이너 실행 |
docker run -d <image> | 백그라운드 실행 (분리) |
docker run -it <image> bash | 셸과 함께 대화형 실행 |
docker run --name <name> <image> | 이름 지정하여 실행 |
docker run -p 8080:80 <image> | 포트 매핑 호스트:컨테이너 |
docker run -v /host:/container <image> | 볼륨 마운트 |
docker run -e KEY=value <image> | 환경 변수 설정 |
docker run --env-file .env <image> | 파일에서 환경변수 로드 |
docker run --rm <image> | 종료 후 삭제 |
docker run --network <net> <image> | 네트워크에 연결 |
docker run --restart always <image> | 실패 시 자동 재시작 |
docker ps | 실행 중인 컨테이너 목록 |
docker ps -a | 모든 컨테이너 목록 |
docker start <container> | 중지된 컨테이너 시작 |
docker stop <container> | 실행 중인 컨테이너 중지 |
docker restart <container> | 컨테이너 재시작 |
docker kill <container> | 컨테이너 강제 중지 |
docker rm <container> | 컨테이너 삭제 |
docker rm $(docker ps -aq) | 모든 컨테이너 삭제 |
docker container prune | 중지된 컨테이너 삭제 |
docker rename <old> <new> | 컨테이너 이름 변경 |
docker update --restart always <c> | 컨테이너 설정 업데이트 |
docker exec -it <container> bash | 컨테이너에서 bash 실행 |
docker exec <container> <cmd> | 명령 실행 |
docker attach <container> | 컨테이너에 연결 |
docker logs <container> | 컨테이너 로그 보기 |
docker logs -f <container> | 로그 팔로우 (tail) |
docker logs --tail 100 <container> | 마지막 100줄 표시 |
docker inspect <container> | 컨테이너 상세 정보 |
docker top <container> | 실행 중인 프로세스 보기 |
docker stats | 리소스 사용량 보기 |
docker cp <container>:/path /local | 컨테이너에서 복사 |
docker cp /local <container>:/path | 컨테이너로 복사 |
docker network ls | 네트워크 목록 |
docker network create <name> | 네트워크 생성 |
docker network create --driver bridge <n> | 브리지 네트워크 생성 |
docker network rm <network> | 네트워크 삭제 |
docker network inspect <network> | 네트워크 상세 정보 |
docker network connect <net> <container> | 컨테이너를 네트워크에 연결 |
docker network disconnect <net> <c> | 네트워크에서 연결 해제 |
docker network prune | 미사용 네트워크 삭제 |
docker volume ls | 볼륨 목록 |
docker volume create <name> | 볼륨 생성 |
docker volume rm <volume> | 볼륨 삭제 |
docker volume inspect <volume> | 볼륨 상세 정보 |
docker volume prune | 미사용 볼륨 삭제 |
-v <vol>:/path | 명명된 볼륨 마운트 |
-v /host/path:/container/path | 호스트 디렉토리 바인드 마운트 |
-v /host/path:/path:ro | 읽기 전용 마운트 |
docker compose up | 서비스 시작 |
docker compose up -d | 백그라운드에서 시작 |
docker compose up --build | 빌드 후 시작 |
docker compose down | 중지 및 삭제 |
docker compose down -v | 볼륨과 함께 중지 및 삭제 |
docker compose ps | 컨테이너 목록 |
docker compose logs | 로그 보기 |
docker compose logs -f | 로그 팔로우 |
docker compose exec <svc> bash | 서비스에서 실행 |
docker compose build | 이미지 빌드 |
docker compose pull | 이미지 가져오기 |
docker compose restart | 서비스 재시작 |
docker compose stop | 서비스 중지 |
docker compose config | compose 파일 검증 |
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./app:/app
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
db_data: FROM image:tag | 베이스 이미지 |
FROM image:tag AS stage | 명명된 빌드 스테이지 |
WORKDIR /app | 작업 디렉토리 설정 |
COPY src dest | 파일/디렉토리 복사 |
COPY --from=stage src dest | 스테이지에서 복사 |
ADD src dest | 자동 압축 해제 복사 |
RUN command | 명령 실행 |
RUN ["cmd", "arg1"] | Exec 형식 |
ENV KEY=value | 환경 변수 설정 |
ARG NAME=default | 빌드 인자 |
EXPOSE 8080 | 포트 문서화 |
CMD ["cmd", "arg"] | 기본 명령 |
ENTRYPOINT ["cmd"] | 메인 실행 파일 |
USER username | 사용자로 실행 |
VOLUME /data | 마운트 포인트 |
LABEL key=value | 메타데이터 추가 |
HEALTHCHECK CMD curl ... | 컨테이너 헬스체크 |
# 빌드 스테이지
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# 프로덕션 스테이지
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
EXPOSE 3000
CMD ["node", "dist/server.js"] docker login | Docker Hub 로그인 |
docker login registry.example.com | 프라이빗 레지스트리 로그인 |
docker logout | 레지스트리 로그아웃 |
docker tag image registry/image:tag | 레지스트리용 태그 |
docker push registry/image:tag | 레지스트리에 푸시 |
docker pull registry/image:tag | 레지스트리에서 풀 |
docker search <term> | Docker Hub 검색 |
--user 1000:1000 | 특정 사용자/그룹으로 실행 |
--read-only | 읽기 전용 파일시스템 |
--cap-drop ALL | 모든 권한 제거 |
--cap-add NET_BIND_SERVICE | 특정 권한 추가 |
--security-opt no-new-privileges | 권한 상승 방지 |
--memory 512m | 메모리 제한 |
--cpus 0.5 | CPU 제한 |
--pids-limit 100 | 프로세스 제한 |
docker scan <image> | 취약점 스캔 |
docker system df | 디스크 사용량 표시 |
docker system prune | 미사용 데이터 삭제 |
docker system prune -a | 모든 미사용 데이터 삭제 |
docker system prune --volumes | 볼륨도 함께 정리 |
docker info | 시스템 정보 표시 |
docker version | Docker 버전 표시 |
.dockerignore로 파일 제외docker compose 사용