Docker 명령 정리

  • image
    • 빌드 명령 : docker build —platform=linux/amd64 -t tag_name
    • 이미지 확인 : docker images
    • 이미지 삭제 : docker rmi 또는 docker image rm
  • Docker Hub
    • 로그인 : docker login -u userID -p PW
    • Pull : docker pull accountID/image_name
    • Push : docker push accountID/image_name
  • Container
    • 생성 : docker create
    • 이미지 실행 : docker run —name -p -v image_name
    • 프로세스 확인 : docker ps
    • 컨테이너 실행 : docker start container_id
    • 컨테이너 정지 : docker kill
    • 컨테이너 삭제 : docker rm
    • 로그 확인 : docker logs -f container_id (—tail 옵션사용가능)
    • 이미 실행된 컨테이너에게 명령 수행 : docker exec container_id <명령어>
    • 백그라운드에서 수행 : docker run -d image_name

Docker Volume

: Docker Container가 실행되었다가 중단되면 데이터가 사라진다. → 데이터의 유지를 원한다면 Volume이 필요하다.

정의

  • 호스트 파일 시스템 폴더를 Docker Container 파일 시스템의 폴더로 마운트하는 것
    • Container가 사라져도 데이터를 남게한다.
    • 마운트 : 물리적 장치를 파일 시스템의 특정 폴더에 연결하는 것

Docker Volume 타입

: docker run -v를 실행할 때 지정된다.

  1. Host Volumns : 페어로 지정
    • docker run -v host_file_sys_path:container_file_sys_path
  2. Anonymous Volumes : 컨테이너 패스만 지정
    • dockr run -v path
    • Dockerfile에서 사용되는 방식, 호스트에 액세스되지는 않으나 재시작 시 유지
  3. Named Volumes : docker run -v : 이름과 컨테이너 패스를 지정
    • docker run -v name:path
    • 가장 선호되는 방식, 하나의 Volume을 다수의 컨테이너에서 공유 가능
    • docker-compose에서도 사용된다.
  • Readonly로 지정 : name:path:ro

Dockerfile에서 volume 사용 예

  • nginx 데모#1 (저장 안됨)
    • docker run -d —name=nginx -p 8081:80 nginx (8081포트로 열기)
    • container 접속 : docker exec —user=root -it nginx sh
      • nano 설치 (apt)
      • nano /usr/share/nginx/html/index.html 내용 편집
    • docker 재시작 (docker restart nginx)
  • nginx 데모#2 (Volume 사용)
    • 맵핑을 위한 폴더와 파일 생성 (index.html)
    • Dockerfile로 이미지 빌딩
      FROM nginx:latest
      RUN echo "<h1>test volume</h1>" > /user/share/nginx/html/index.html
    • 폴더 마운트
      • docker run -p 8081:80 —name nginx -v local_path:/usr/share/nginx/html nginx
  • docker-compose.yml (airflow의 내용으로 사용)
    volumes:
    - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags

Docker Volume 명령들

  • Volume 확인 : docker volume ls
  • 삭제 : docker volume rm
  • 사용되지 않는 모든 볼륨 삭제 : docker volume prune
  • 특정 볼륨의 내용을 깊게 살펴보고 싶은 경우 : docker volume inspect

'Infra & Container > Docker' 카테고리의 다른 글

Docker - 간단한 docker compose 만들어보기(zoomcamp)  (0) 2024.03.21
Docker - Docker compose  (0) 2024.03.21
Docker - Postgres > Data Ingestion  (0) 2024.03.21
Docker - Postgres > pgadmin  (0) 2024.03.20
Docker - Postgres  (0) 2024.03.20

+ Recent posts