Skip to content

Azure Container Orchestratoin #1

manchiro edited this page Jul 17, 2020 · 6 revisions

day2 day3

0. Intro

실습환경

  • 시작 > Docker Desktop
  • 시작 > Ubuntu 18.04 LTS > 설치 : MS 로그인 하지 않아도 됨.
  • Ubuntu에서 Azure Client 설치

Docker (교재 P32)

  • Local Respository가 Docer Daemon 임.
  • Icon Tray > Settings > Expose daemon on tcp://localhost:2375 without TLS 선택

    docker가 수행이 안된다면

    1. Windows 기능 켜기/끄기 -> Hyper - V 체크 해제 -> 재부팅
    2. 1번과 동일하게 Windows 기능 켜기/끄기 -> Hyper - V 체크 후 -> 재부팅
    3. gpedit.msc -> 로컬 그룹 정책 편집기에서 "컴퓨터 구성 -> 관리 템플릿 -> 시스템 - Device Guard -> 가상화 기반 보안 켜기 편집(더블클릭) -> 사용안함

Docker Client, K8s Client , Azure Cli 설치

  • Ubuntu 설치
  • Docker cient 설치
  • AZcure Client 설치

도커 데몬과 도커 Client 연결 https://workflowy.com/s/msa/27a0ioMCzlpV04Ib#/35190b0d69d3

  • Docker client가 호출되는 요청을 Repository가 되도록 설정함.

1. Linux 명령어

  • watch 명령어 : 입력한 명령어의 결과를 일정한 주기 초 단위 모니터링 하기 위한 명령

watch ls

  • cat deployment.yaml | grep "hello" # 명령어 2 개 이상을 엮어서 앞 명령의 결과를 뒷 명령의 입력으로
  • echo "hello, korea" >> deployment2.yaml # 첫번째 명령의 결과를 두번째 파일의 끝 부분에 추가

2. Docker

2.1 Docker Image & Container

Docker & Container 의 차이점 (예상)

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

Docker Image

  • 가상머신 생성시 사용하는 ISO 와 유사한 개념의 이미지
  • 여러 개의 층으로 된 바이너리 파일로 존재
  • 컨테이너 생성시 읽기 전용으로 사용
  • 도커 명령어로 레지스트리로부터 다운로드 가능
  • 저장소 이름 : 이미지가 저장된 장소 , 이름이 없으면 도커 허브 (Docker 로 인식)
  • 이미지 이름 : 이미지 이름 , 생략 불가
  • 이미지 버전 : 이미지 버전정보 , 생략 시 latest 로 인식
  • 이미지 Path 는 //<Image_name>: 형식
  • library 는 도커허브 공식 이미지 Namespace 로 , 여기에 사용자 이름이 위치

Docker Container

  • 도커 이미지로 부터 생성
  • 격리된 파일시스템 , 시스템 자원 , 네트워크를 사용할 수 있는 독립공간 생성
  • 이미지를 읽기 전용으로 사용 , 이미지 변경 데이터는 컨테이너 계층에 저장

Docker Image Commands

  • docker run --name my-nginx -d -p 80:80 nginx
    • 이미지 저장소(Docker hub)에서 nginx 이미지를 pull 하여 docker container를 my-nginx 만들어줘.
    • 사용자접속포트:노출포트
skccadmin@SKCC18D00132:~$ docker run --name nginx -d -p 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
8559a31e96f4: Pull complete
1cf27aa8120b: Pull complete
67d252a8c1e1: Pull complete
9c2b660fcff6: Pull complete
4584011f2cd1: Pull complete
Digest: sha256:a93c8a0b0974c967aebe868a186e5c205f4d3bcb5423a56559f2f9599074bbcd
Status: Downloaded newer image for nginx:latest
84fba74735fb6c5c7c9934a42f4a942b8590bb8710ba939c24c9824f34af6b15
  • docker run --name nginx -d -p 8080:80 nginx
  • docker ps # container 목록 조회
  • docker images #local 저장된 이미지 목록

Docker Images command

  • 컨테이너 실행

$ docker run [Options] [Image] [

  • 실행 중인 컨테이너 확인

$ docker ps $ docker ps -a # 정지된 컨테이너 포함

  • 컨테이너 시작 , 재시작 , 종료

$ docker start / restart / stop [ 컨테이너 이름

  • 컨테이너 삭제

$ docker container rm [ 컨테이너 ID]

  • 모든 컨테이너 한번에 삭제 중지 후 삭제

$ docker container rm $(docker ps a q)

2.2 Lab. Docker Build & Push

  • html 내용 및 dockerfile 생성
  • 도커라이징
    • 현재 폴더에 있는 Dockerfile로 이미지를 생성함.
    • docker build -t (Docker-ID)/my-nginx:v1 .
skccadmin@SKCC18D00132:~/Dockerfile$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
manchiro/my-nginx   v1                  254d30fcb533        About a minute ago   132MB
nginx               latest              0901fa9da894        2 days ago           132MB
  • docker login # docker에 로그인함
  • docker push (Docker-ID)/my-nginx:v1
skccadmin@SKCC18D00132:~/Dockerfile$ docker push manchiro/my-nginx:v1
The push refers to repository [docker.io/manchiro/my-nginx]
75675fafdf98: Pushed
2808ec4a8ea7: Mounted from library/nginx
4856db5e4f59: Mounted from library/nginx
7ef35766ef7d: Mounted from library/nginx
0e32546a8af0: Mounted from library/nginx
13cb14c2acd3: Mounted from library/nginx
v1: digest: sha256:f48620a58aa13144c44dd83fc6caa3a80be81cb6367ad9728b3c896678afa5ae size: 1569
  • 컨테이너 삭제 : docker container rm $(docker ps -a -q)
  • 이미지 삭제 : docker image rm -f $(docker images -q)
    • 컨테이너 부터 삭제해야 이미지를 삭제할 수 있음.

3. K8s

3.1 리소스 그룹명 : admin5-Resource_Group

3.2 Kubernetes 서비스

  • 클러스터 만들기 : 쿠버네티스명 admin5-k8s

3.3 컨테이너 레지스트리 : admin5acr, admin5acr.azurecr.io

  • 이미지 리파지토리로, docker hub의 나의 계정에 올리지 않고, 컨테이너에 등록하게됨.
  • admin5acr.azurerc.io/my-nginx:v1
# az account set --subscription "종량제1"
# az aks get-credentials --resource-group admin5-Resource_Group --name admin5-k8s
# az acr login --name admin5acr
# az aks update -n admin5-k8s -g admin5-Resource_Group --attach-acr admin5acr
# kubectl create deploy my-nginx --image=manchiro/my-nginx:v1
# kubectl expose deploy my-nginx --type=LoadBalancer --port=80

통합 실습 (Final Project)

  • 분석/설계- 이벤트 스토밍 (40점), 구현 (30점), 운영 (30점)
  • 9월
  • TCL 통해 실습료 지원. 동일부분 구성원도 가능. Lab당 1백만원. 1명당 4만원. 교재비/식사/다과 지원가능.
  • 연구개발 주제를 Project 내용으로 가능함.
  • 연제경(팀), 노필호, 박유리, 성은주, 채민호