[데이터 엔지니어링 데브코스] TIL 45일차 - Docker & K8S (3)

박단이·2024년 1월 1일
0

데브코스 TIL

목록 보기
45/56

오늘 배운 것🤓

Docker Volume

  • Docker Container가 실행 중에 중단된다면 데이터는 저장되지 않고 모두 날라간다.
  • Docker Container로 실행하는 애플리케이션이 일회성으로 동작하는 것이 아니라 계속 동작해야 한다면(예. DB) 데이터가 영구적으로 보관되어야 한다.
  • Data Persistence를 보장하기 위해 Docker Volume을 사용한다.
  • Docker Container 내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 mapping 하는 방식이다.

Volume 종류

  1. Host Volumes
    • 호스트 파일 시스템 경로와 컨테이너 파일 시스템 경로를 페어로 지정한다.
      $ docker run -v 호스트경로:컨테이너경로
  2. Anonymous Volumes
    • 컨테이너 경로만 지정하면, 호스트에 임의의 경로를 생성하여 그 안에 저장한다.
    • 저장된 위치를 찾아야한다는 번거로움으로 많이 사용하지 않는다.
    • docker file을 사용하여 이미지를 생성할 때 사용할 수 있는 방법이다.
    • $ docke run -v 컨테이너경로
  3. Named Volumes
    • Anonymous Volumes의 문제점을 해결한 방식으로, 현재 가장 많이 선호되는 방식이다.
    • 저장되는 path에 별칭을 부여하여 관리한다.
    • 하나의 volume을 다수의 container에서 공유할 수 있도록 한다.
    • docker-compose를 통해 이미지 생성 시 사용할 수 있다.
    • $ docker run -v 별칭:컨테이너경로:ro
      여기서 :ro는 읽기 전용(read only)이라는 뜻!

명령어 정리

  • $ docker volume ls
    : Volume의 목록
  • $ docker volume rm 볼륨이름
    : 특정Volume 삭제
  • $ docker volume prune
    : 사용되지 않는 모든 Volume 삭제
  • $ docker volume inspect 볼륨이름
    : 특정 Volume의 자세한 정보

Docker Clean-Up

방식이 2가지 있다. 하나는 CLI방식, 다른 하나는 docker desktop을 사용하는 방식. GUI가 더 간단하고 명료하기 때문에 desktop을 사용하도록 하자.

1. CLI 사용해서 clean-up

# 1. Container 중지 및 삭제
$ docker container rm -f $(docker container ls -aq)
# 2. Image 삭제
$ docker image rm -f $(docker image ls -q)
# 3. 정말 다 삭제 되었는지 확인
$ docker ps
$ docker images

2. Docker Desktop 사용

  • Trouble Shoot 메뉴 선택(벌레 모양)
    -> Clean/Purge data 클릭
    또는 Reset to factory defaults 클릭 (이 경우 모든 설정이 초기화 되기 때문에 주의할 것!)
    docker cleanup GUI
     

Docker Network

  • 다수의 Container로 구성된 소프트웨어끼리 Network를 연결해주기 위해 사용
  • 기존에는 docker의 link 옵션을 사용했다.
  • 현재는 network를 하나 만들고 연관된 모든 container를 network안으로 지정하는 방식을 사용한다.
  • 연결 상황에 따라 별개의 네트워크를 만들고 사용하기도 한다. (예. back-tier, front-tier)
$ docker network create 네트워크이름
$ docker run --name=컨테이너이름 --network 네트워크이름 이미지이름
  • 여기서 주의! --name옵션에는 =이 들어가지만 --network 옵션에는 =이 없다!

느낀 점😊

볼륨과 네트워크는 도커를 사용할 때 필수적으로 사용하는 내용이라고 생각한다! 너무 중요한 핵심 포인트니 다시 한번더 복습 필요!

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글