[TIL] 개발환경 구축을 위한 Docker와 K8S 실습 (3)

이원진·2023년 6월 14일
0

데브코스

목록 보기
48/54
post-thumbnail

학습내용


  1. Docker 명령 정리

  2. Docker Volume

  3. 다수의 Container로 구성된 소프트웨어 실행

1. Docker 명령 실행


  • Image 관련

    • docker build --platform=linux/amd64 -t namespace/image_name: Image 생성 시 플랫폼 및 태그 지정

    • docker images or docker image ls: Image 목록 조회

    • docker rmi or docker image rm: Image 삭제

  • Docker Hub 관련

    • docker login -u username -p password: Docker Hub에 로그인

    • docker pull namespace/image_name: Docker Hub에서 Image 다운로드

    • docker push namespace/image_name: Docker Hub에 Image 업로드

  • Container 관련

    • docker create: Container 생성

    • docker run --name -p -v image_name: Container 생성 및 실행

    • docker ps: Container 리스트 출력

      • -a: 종료된 Container도 함께 출력

      • -q: Container ID만 출력

    • docker stop container_name: Container 종료

    • docker start container_name: 생성된 Container 실행

    • docker restart container_name: Container 재시작

    • docker kill container_name: Container 강제 종료

    • docker pause container_name: 실행 중인 Container 일시 중지

    • docker unpause container_name: 일시 중지된 Container 재실행

    • docker rm container_name: Container 삭제

  • logs 관련

    • docker logs -f container_name: 실시간 로그 스트리밍

    • docker logs --tail 100 container_name: 마지막으로부터 100건의 로그만 출력

  • docker exec: 실행 중인 Container에 접속

  • 백그라운드 / 포그라운드 실행 관련

    • docker run -d image_name: Container 백그라운드로 실행

    • docker attach container_name: 백그라운드로 실행 중인 Container 포그라운드로 전환


2. Docker Volume


  • 특정 소프트웨어가 Docker Container로 실행되었을 때 일회성이 아닌 계속 동작해야 한다면, 데이터가 영구적으로 보관되어야 함

    • 이를 보장하는 것이 Docker Volume

  • Docker Container 내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 매핑(마운트)하는 것

    • 마운트: 디스크와 같은 물리적 장치를 파일 시스템의 특정 폴더와 연결하는 것

    • 호스트에서 내용 수정 시 Container에도 반영되게 설정 가능

    • ex) Container와 호스트 시스템이 특정 폴더 공유

  • Docker Volume 타입

    • Host Volume

      • docker run -v host_path:container_path

    • Anonymous Volume

      • docker run -v container_path

      • dockerfile에서 사용되는 방식으로, 호스트쪽에 액세스되지는 않지만 재시작해도 유지됨

    • Named Volume

      • docker run -v name:container_path

      • docker-compose에서도 사용되며, 가장 많이 선호되는 방식

      • 하나의 Volume을 다수의 Container에서 공유 가능

  • Docker Volume 명령어

    • docker volume ls: 생성된 Volume의 일부 조회

    • docker volume rm: Volume 삭제

    • docker volume prune: Container에서 사용되지 않는 모든 Volume 삭제

    • docker volume inspect: Volume 상세 정보 확인


3. 다수의 Container로 구성된 소프트웨어 실행


  • 여러 개의 Image를 단순히 실행한다고 하나의 소프트웨어처럼 동작하지 않음

    • 네트워크를 구성해줘야 함

  • docker network create mynetwork: 네트워크 생성

    • 이후에 Image를 run할 때 --network mynetwork 옵션 부여

메모


  • Docker 환경을 cleanup하기 위해서는 Docker Desktop에서 삭제하는 것이 가장 직관적

    • Troubleshoot → Clean / Purge data

0개의 댓글