Boxya 2025. 6. 16. 20:50

[KT] AIVLE SCHOOL 55일차

 

Docker

  • Go 언어로 작성된 "The future of linux Containers"
  • Container based
    • 프로세스 격리 기술
    • 오픈소스 가상화 플랫폼

  • Docker Image
    • 가상머신 생성 시 사용하는 ISO와 유사한 개념의 이미지
    • 여러 개의 층으로 된 바이너리 파일로 존재
    • 컨테이너 생성 시 읽기 전용으로 사용
    • 도커 명령어로 레지스트리부터 다운로드 가능
    • apexacme/ubuntu:18.04
      • 저장소 이름 : 이미지가 저장된 장소, 이름이 없으면 도커 허브(Docker Hub)로 인식, apexacme
      • 이미지 이름 : 이미지 이름, 생략 불가, ubuntu
      • 이미지 버전 : 이미지 버전 정보, 생략 시 latest로 인식, 18.04
    • 경로 샘플
      • Azure 이미지 URL: gdhong.azurecr.io/order:1.0
      • GCP 이미지 샘플 : gcr.io/shoppmall/order:2.2
      • Amazon 이미지 샘플 : 283210891307.dkr.ecr.ap-northeast-2.amazonaws.com/order:1.0
      • GitHub 이미지 샘플, (20/09/01 베타오픈) : ghcr.io/gkedu/order:1.1.1
    • 이미지 Path는 <URL>/<namespace>/<Image_name>:<tag> 형식
    • library는 도커허브 공식 이미지 Namespace로, 여기에 사용자 이름이 위치
    • Private 이미지 저장소(Docker, harbor)를 설치하여 운영 가능
    • Docker Image 명령어
      • 도커 이미지 목록 확인
        • $ docker images
      • 도커 이미지 불러오기
        • 컨테이너 run 시에 이미지가 없으면 Docker Hub로부터 자동으로 Pull
        • $ docker pull [ImageName:태그]
      • 도커 이미지 삭제
        • docker image rm [이미지 ID]
        • docker image rm -f [이미지 ID] : 컨테이너를 삭제하기 전에 이미지 삭제
      • 도커 모든 이미지 한 번에 삭제
        • $docker image rm $(docker images -q)
  • Docker Container
    • 도커 이미지로부터 생성
    • 격리된 파일 시스템, 시스템 자원, 네트워크를 사용할 수 있는 독립공간 생성
    • 이미지를 읽기 전용으로 사용, 이미지 변경 데이터는 컨테이너 계층에 저장
    • Docker Container 명령어
      • 컨테이너 실행
        • $docker run [Options][Image][Command]
      • 실행 중인 컨테이너 확인
        • $docker ps
        • $docker ps -a : 정지된 컨테이너 포함
      • 컨테이너 시작, 재시작, 종료
        • $docker start / restart / stop [컨테이너 이름]
      • 컨테이너 삭제
        • $ docker container rm [컨테이너 ID]
      • 모든 컨테이너 한번에 삭제(중지 후 삭제)
        • docker container rm $(docker ps -a -q)
  • Docker 빌드 & 푸시 명령어
    • Dockerfile로 이미지 생성
      • docker build --tag [생성할 이미지 이름] : [태그 이름].
      • # 맨 마지막의 .(마침표)은 Dockerfile의 위치
      • 이미지 이름은 URL(Docker hub, Cloud Container registry, Private registry)로 시작
    • 이미지 Push
      • $ docker login
      • $ docker push [이미지 REPOSITORY] : [태그]
    • Docker Hub에서 확인
      • http://hub.docker.com (login)

 

  •  아키텍처-계층화
    • Image : 여러 개의 읽기 전용(Read Only) 레이어로 구성
    • Container: Iamge 위에 R/W 레이어를 두고, 실행 중 생성 또는 변경 내용 저장