Docker

Docker Commands

  • docker ps

    • 실행 중인 컨테이너 목록 확인

    • -a : 모든 컨테이너 조회

      docker ps
      docker ps -a
    
  • docker images

    • 로컬 저장된 Docker 이미지 목록 확인

    • -q : 이미지 ID만 출력

      docker images
      docker images -q
    
  • docker pull

    • 원격 레지스트리에서 이미지 다운로드
      docker pull ubuntu
      docker pull ubuntu:22.04
    
  • docker tag

    • 기존 이미지에 새 태그 지정
      docker tag ubuntu:latest my-ubuntu:custom
    
  • docker run

    • 컨테이너 생성 및 실행

    • -d : 백그라운드 실행

    • -it : 인터랙티브 모드 (쉘 접근)

    • --name : 컨테이너 이름 지정

    • -p 호스트포트:컨테이너포트 : 포트 매핑

    • -e : 환경 변수 설정

    • --network : 네트워크 지정

    • --restart : 재시작 정책 (no, always, on-failure)

    • -v 호스트경로:컨테이너경로 : 볼륨 마운트

      docker run -d --name my-container \
        -p 8080:80 \
        -e ENV_VAR=value \
        --network my-network \
        --restart always \
        -v /host/path:/container/path \
        ubuntu:latest
    
  • docker start / docker stop

    • 컨테이너 시작 또는 중지
      docker start my-container
      docker stop my-container
    
  • docker restart

    • 컨테이너 재시작
      docker restart my-container
    
  • docker rm

    • 컨테이너 삭제

    • -f : 실행 중인 컨테이너 강제 삭제

      docker rm my-container
      docker rm -f my-container
    
  • docker rmi

    • 이미지 삭제

    • -f : 사용 중인 이미지 강제 삭제

      docker rmi ubuntu:latest
      docker rmi -f ubuntu:latest
    
  • docker exec

    • 실행 중인 컨테이너에서 명령 실행

    • -it : 터미널 인터페이스 활성화

      docker exec -it my-container bash
      docker exec my-container ls /
    
  • docker logs

    • 컨테이너 로그 확인

    • -f : 실시간 로그 확인

      docker logs my-container
      docker logs -f my-container
    

Docker Compose

  • docker-compose up

    • docker-compose.yml 기반 컨테이너 실행

    • -d : 백그라운드 실행

    • --build : 이미지 새로 빌드

      docker-compose up -d
      docker-compose up --build
    
  • docker-compose down

    • docker-compose로 실행한 컨테이너 및 네트워크 삭제

    • -v : 볼륨까지 삭제

      docker-compose down
      docker-compose down -v
    
  • docker-compose ps

    • docker-compose로 실행 중인 컨테이너 목록 확인
      docker-compose ps
    
  • docker-compose logs

    • docker-compose 컨테이너의 로그 출력

    • -f : 실시간 로그 확인

      docker-compose logs
      docker-compose logs -f
    
  • docker-compose restart

    • docker-compose 컨테이너 재시작
      docker-compose restart
    
  • docker-compose exec

    • 실행 중인 컨테이너에서 명령 실행
      docker-compose exec my-service bash
    

Docker Hub

  • docker login

    • Docker Hub 로그인
      docker login
    
  • docker tag

    • 로컬 이미지를 Docker Hub에 푸시할 이름으로 태깅
      docker tag my-image my-dockerhub-username/my-image:latest
    
  • docker push

    • Docker Hub에 이미지 업로드
      docker push my-dockerhub-username/my-image:latest
    
  • docker pull

    • Docker Hub에서 이미지 다운로드
      docker pull my-dockerhub-username/my-image:latest
    

Dockerfile

  • 기본 형식

    • FROM : 베이스 이미지 지정

    • WORKDIR : 작업 디렉토리 설정

    • COPY : 파일 복사

    • RUN : 명령어 실행

    • CMD : 컨테이너 시작 시 실행할 기본 명령

    • EXPOSE : 컨테이너가 열 포트 지정

    • ENV : 환경 변수 설정

      FROM ubuntu:latest  
      WORKDIR /app  
      COPY . /app  
      RUN apt-get update && apt-get install -y curl  
      ENV ENV_VAR=value  
      EXPOSE 8080  
      CMD ["bash"]
    
  • ENTRYPOINT

    • 컨테이너 실행 시 실행될 기본 명령 설정

    • CMD와 함께 사용 가능

      ENTRYPOINT ["python", "app.py"]
      CMD ["--debug"]
    
  • ARG

    • 빌드 시 전달할 변수 설정
      ARG VERSION=latest
      FROM ubuntu:$VERSION
    
  • 멀티 스테이지 빌드

    • 빌드용 이미지와 실행용 이미지를 분리하여 최적화
      FROM golang:1.20 AS builder  
      WORKDIR /app  
      COPY . .  
      RUN go build -o myapp  
        
      FROM ubuntu:latest  
      COPY --from=builder /app/myapp /myapp  
      CMD ["/myapp"]
    

docker-compose.yml

  • 기본 형식

    • version : Compose 파일 버전 지정

    • services : 실행할 컨테이너 목록

    • volumes : 데이터 유지할 볼륨 설정

    • networks : 컨테이너 간 통신할 네트워크 설정

      version: "3.8"
        
      services:
        app:
          image: my-app
          container_name: my-app-container
          ports:
            - "8080:80"
          volumes:
            - ./data:/app/data
          environment:
            - ENV_VAR=value
          networks:
            - my-network
        
      networks:
        my-network:
    
  • build 옵션

    • Dockerfile을 사용하여 이미지 빌드
      services:
        app:
          build: .
    
  • depends_on

    • 서비스 실행 순서 지정
      services:
        db:
          image: postgres
        app:
          image: my-app
          depends_on:
            - db
    
  • restart 정책

    • no : 재시작 안 함

    • always : 항상 재시작

    • on-failure : 실패 시 재시작

      services:
        app:
          image: my-app
          restart: always
    
  • command

    • 컨테이너 실행 시 실행할 명령어 지정
      services:
        app:
          image: my-app
          command: ["python", "app.py"]
    
  • entrypoint

    • DockerfileENTRYPOINT를 덮어쓰기
      services:
        app:
          image: my-app
          entrypoint: ["bash", "-c", "echo Hello"]
    
  • healthcheck

    • 컨테이너 상태 확인 설정
      services:
        app:
          image: my-app
          healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost"]
            interval: 30s
            retries: 3
    

results matching ""

    No results matching ""