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
Dockerfile
의ENTRYPOINT
를 덮어쓰기
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