2 minute read

일지

4일 연휴 너무 달콤했따

주요 키워드

Docker Udemy AWS Gitblog

오늘의 할일

  • 220508 TIL 작성
  • Docker 강의 끝내기
  • 정보공유 스터디 자료작성
  • Udemy AWS 모의고사 3회
  • Showcase 항목개편

추가로 정리해야할 부분

블로그 글 내용 최신화

수업 정리


Private Docker Registry

Overview

  • Docker privae repository
  • Registry options
  • build & tag an image
  • docker login
  • docker push
  • Docker Registry
    • ON AWS ECR

Create private D. repo on AWS

  • Private repository for Docker = Docker Registry
  • AWS ECR(Elastic Container Registry)
    • 대충 생성버튼 누르고
      • 레포 이름/my-app
    • Repository per Image
      • Can save diff. tags(versions) of the same image
  • 생성된 저장소를 클릭하고, view push commands
    1. docker login으로 로그인 되어있어야함 (자격증명?, 만약에 젠킨스에서 올린다면 젠킨스의 자격증명 제공)
      • aws ecr get-login-password –region ap-northeast-2 docker login –username AWS –password-stdin 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com
      • 사전 조건
        • AWS Cli 설치, Credentials 구성

Image Naming in D. registries registryDomain/imageName:tag

  • In Dockerhub:
    • docker pull mongo:4.2 > 앞의 도메인네임은 생략하고 사용됨
    • docker pull docker.io/library/mongo:4.2 > 원본, 우리는 축약(shorthand) 형태로 사용중
  • In AWS ECR
    • docker pull 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com/my-app:latest

  • docker push my-app:1.0 > ECR이 아닌 도커허브로 보내려고함
  • 따라서 이미지에 태그를 지정해서 ECR로 보내야함
    • docker tag my-app:latest 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com/my-app:latest
    • docker tag = rename the image
    • docker images로 확인하면 새로운 이미지가 복사되어있음
  • docker push 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com/my-app:latest

Make some changes to the App, rebuild&push a new version to AWS repo

  • RUN의 mkdir의 경로 변경
  • server.js 의 내용도 일부변경
  • docker build -t my-app:1.1 .
  • docker tag my-app:1.1 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com/my-app:l.1
  • docker push 596152156334.dkr.ecr.ap-northeast-2.amazonaws.com/my-app:l.1
    • 변경, 추가된 layer들만 push 됨
  • ECR은 한 REPO에서 약 1,000여개의 이미지 관리가능

Deploy containerized App

Overview

  • Image from a privae repository
  • Deploy multiple containers
  • Deployment Server
  • Depolying the app
    • On the integration environment like Dev Server,
      • pull my app from AWS ECR
      • pull mongoDB,express from DockerHub
  • Docker-Compose 파일에 필요한 변경점 추가
    • 이미지 정보, 포트정보, 등 df
  • Private repo에서 pull 하기위해 서버의 login(자격증명제공)필요함
  • Public DockerHub는 별도의 로그인필요X

  • docker-compose -f mongo.yml up
  • 컴포즈 파일에 변수들을 입력해두었기 때문에 컨테이너 내부의 설정파일에서 (server.js) 일일히 포트를 입력&변경할 필요없음

Persisting Data w/Volumes

Overview;

  • When do we need DV.?
  • What is Docker Volumes?
  • 3 Volume Types
  • DV. in docker-compose file

  • DV.
    • For data persistence
    • Databases, other stateful Apps

When do we need DV?

  • Container provide its own Virtual File System
  • Data is gone! When restarting or removing the Con.

What is DV?

  • Host File system(physical)-/home/mount/data
  • Virtual File System(logical)-/var/lib/mysql/data
  • Folder in phy. host FS is mounted into the virtual FS of D.
  • Data gets automatically replicated

3 Volume Types

  1. docker run -v {HOSTPATH}:{CON.PATH}
    • -v /home/mount/data:/var/lib/mysql/data
    • Host Volumes
    • U decide where on the host filesystem the references is made
    • Host의 어떤 디렉토리를 연결할거야?지정가능
  2. docker run -v {Con.PATH}
    • -v /var/lib/mysql/data
    • Anonymous Volumes
    • for each Con, a folder is generated that gets mounted
    • /var/lib/docker/volumes/{random-hash}_data
  3. docker run -v name:/{CON.PATH}
    • -v name:/var/lib/mysql/data
    • Named Volumes
    • U can reference the V by name
  • 가장 많이 사용되고 사용되어야할것은 Named Volumes
    • 해당 볼륨 사용으로인한 추가적인 이득이있다는데 그게뭐시여

DV in docker-composer Named Volume

version: '3'
service:
  mongodb:
    image: mongo
    ports:
      - 27017:27017
    volumes:
      - db-data:/var/lib/mysql/data
  mongo-express:
    image: mongo-express
  
  ...(중간생략)

 volume:  #service랑 같은 들여쓰기수준
   db-data  #생성한?사용된? volume 나열
  • service 수준의 volume에서 Named Volume 나열
  • 이후 개별 컨테이너에서 해당 볼륨 가져다씀
  • 컨테이너간 동일한 파일을 공유해야할 경우 유용

DV Demo

  • docker-compose -f docker-compose.yml up

Define Named V in D-compose File 대충 볼륨설명이랑 비슷하니까 뭐..

Where the DV are located?

  • Windows;
    • C:/ProgramData/docker/volumes
  • Linux;
    • /var/lib/docker/volumes
  • MacOS;
    • /var/lib/docker/volumes
  • Each Volume has unique hash/_data

Wrap UP

  • 도커를 사용해서 컨테이너를 다루는 법을 다뤘음
  • 실제로는 수십개, 수백개의 컨테이너를 다수의 서버에 배포 및 관리해야함
  • 컨테이너들의 관리 = Container Orchestration
    • Kubernetes

Categories:

Updated:

Leave a comment