PowerPoint 프레젠테이션

Similar documents
ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

DE1-SoC Board

PowerPoint 프레젠테이션

chapter4

PRO1_04E [읽기 전용]

untitled

1217 WebTrafMon II

PRO1_09E [읽기 전용]

6주차.key

Portal_9iAS.ppt [읽기 전용]

0125_ 워크샵 발표자료_완성.key

Solaris Express Developer Edition

APOGEE Insight_KR_Base_3P11

PCServerMgmt7

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

Backup Exec

PowerPoint 프레젠테이션

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

Mango220 Android How to compile and Transfer image to Target

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

MySQL-Ch10

CD-RW_Advanced.PDF

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서


<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

인문사회과학기술융합학회

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

Mars OS System Administration Guide

PRO1_02E [읽기 전용]

PowerPoint Presentation

<32B1B3BDC32E687770>

Something that can be seen, touched or otherwise sensed

Cloud Friendly System Architecture

강의10

ODS-FM1

Simplify your Job Automatic Storage Management DB TSC

PowerPoint 프레젠테이션

DocsPin_Korean.pages

MAX+plus II Getting Started - 무작정따라하기

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

solution map_....

LXR 설치 및 사용법.doc

K7VT2_QIG_v3

PowerPoint Presentation

리뉴얼 xtremI 최종 softcopy

PowerPoint Presentation

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

목 차

PRO1_16E [읽기 전용]

Microsoft PowerPoint - [2009] 02.pptx

Chapter 1

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

vm-웨어-앞부속

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

15_3oracle

Sena Technologies, Inc. HelloDevice Super 1.1.0

블로그_별책부록

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

°í¼®ÁÖ Ãâ·Â

휠세미나3 ver0.4

untitled

DW 개요.PDF

untitled

Interstage5 SOAP서비스 설정 가이드

/chroot/lib/ /chroot/etc/

J2EE & Web Services iSeminar

슬라이드 1

UNIST_교원 홈페이지 관리자_Manual_V1.0

SRC PLUS 제어기 MANUAL

05Àå

Assign an IP Address and Access the Video Stream - Installation Guide

DIY 챗봇 - LangCon

untitled

ecorp-프로젝트제안서작성실무(양식3)

1

untitled

T100MD+

Orcad Capture 9.x

슬라이드 1

<49534F C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770>

The Self-Managing Database : Automatic Health Monitoring and Alerting

untitled

<31325FB1E8B0E6BCBA2E687770>

단계

Remote UI Guide

PowerPoint Presentation

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

C# Programming Guide - Types

(SW3704) Gingerbread Source Build & Working Guide

2

도커 오케스트레이션 
애플리케이션 빌드, 테스트, 배포의 통합 관리

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

4S 1차년도 평가 발표자료

초보자를 위한 분산 캐시 활용 전략

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Network seminar.key


Transcription:

클라우드과정보충자료 2019.6 윤형기 (hky@openwith.net)

평가및과제 Review

문제 1. Docker 컨테이너 (container) 의역할에대한설명으로잘못된것은? a. 컨테이너는자기완결적이어서한 Docker 기반환경에서운영되면다른어디에서도이용가능하다. b. 자체환경및클라우드환경어디에나적용가능하다. c. immutable 이어서중복사용, 공유가능한경량급 (lightweight) 개발 / 운영환경을제공한다. d. 기존의개발환경과는단절되어완전히새로운 toolchain 이필요하다. 답 d.

문제 2. Docker 이미지 (image) 에대한설명중잘못된것을고르세요. a. 하나의 tarball 파일이다. b. 이미지는가상머신의일종이며운영체제와개발프레임워크까지하나의파일로간직하며따라서그크기가매우크다. c. 자체의파일시스템을가진다. d. Container 를생성할수있는일종의틀 (template) 역할을한다. 답 b.

문제 3. Docker 에대한설명중잘못된것을고르세요. a. Container 는 Readonly 타입의파일이다. b. Docker Image 파일은 Copy-on-write 전략을채택하였다. c. Graph driver 를통해 layer 구조의이미지파일을공유할수있게되었다. d. Docker for Windows 는유료제품으로서반드시라이선스구입하여야한다. 답 d

문제 4. Dockerfile 작성방법에대한것입니다. 올바르게기술한것은? a. Run 은 Linux 명령어뿐만아니라 C 나 Java 프로그램도실행가능하다. b. 작업공간 (Working directory) 을지정하는명령어는 WORKDIR 이다. c. COPY 는 ADD 의기능에압축해제기능을추가한것이다. d. Dockerfile 이외에도얼마든지다른이름의파일을이용할수있다. 답 d.

문제 5 foo:1.0 라는이름의 docker image 를 Docker Hub 의개인계정 (myname) 에 push 하려합니다. 맞는것은?? 1. $ docker container push foo:1.0 2. $ docker image tag foo:1.0 myname/foo:1.0 $ docker image push myname/foo:1.0 3. $ docker login -u myname -p <your password> $ docker image tag foo:1.0 myname/foo:1.0 $ docker image push myname/foo:1.0 4. $ docker login -u myname -p <your password> $ docker container tag foo:1.0 myname/foo:1.0 $ docker container push myname/foo:1.0 5. $ docker login -u myname -p <your password> $ docker image push foo:1.0 myname/foo:1.0 ( 답 ) 3

문제 6 Docker 가사용하는 container runtime 의이름은? a. runc b. virtualize c. shim d. cgroup ( 답 ) a ( 해설 ) $ docker info grep I runc

문제 7 다음명령을수행하면어떤결과가발생하는가요? $ docker run p 80-87:80 --name nginx3 d nginx a. container 내에서 80 port 와 87port 가열리고이들두가지가 host 의 80 port 와 mapping 된다. b. host 의 80 port 가 container 의 80 과 87 에 mapping 된다 c. container 의 80 port 가 host 의 80 부터 87 까지모두열리고 mapping 된다 d. 에러메시지가발생된다. ( 답 ) c.

문제 8 Docker image 의크기와각 layer 를조사하려면어떤명령어가필요한가요? a. $ docker images --layers <<image-id>> b. $ docker layers <<image-id>> c. $ docker history <<image-id>> d. a 와 b ( 답 ) c

문제 9 다음명령수행시 /bin/sh 의 PID 는몇번인가요? $ docker run -it alpine /bin/sh a. PID 1 b host에서의 docker process와같은 PID c. PID 0 d. 답없음 ( 답 ) a

문 10 다음명령을실행하면 myubuntu 컨테이너는어떤네트워크에 attach 되나요? $ docker run d --name myubuntu Ubuntu /bin/sh c whle true; do echo current date and time: $(date); sleep 10; done a. Bridge network b. Overlay network c. Custom network d. host network ( 답 ) a

[ 주관식 ] ( 문제 1) Alpine linux 이미지를수행시키면서 my-product 라는디렉토리를 read-only mode 로 container folder (/data) 에 mount 하는방법을기술하세요. ( 답 ) 다음명령을수행합니다. $ docker container run -it --rm \ -v my-products:/data:ro \ alpine /bin/sh

( 문제 2) 분산클러스터에서의컨테이너관리를위한 Docker Swarm 과관련하여다음을각각 1 줄로설명하세요. a. Swarm manager 의 consensus 프로토콜 b. service 와 stack 의정의 c. container 들사이의통신방식 ( 답 ) a. master node 인 manager 를 leader 와 follower 로나누고이들사이에 raft store 를동기화시키는방식으로다수결결정하는것 b. service 는희망하는상태 (desired state) 를기술한것, stack 은서로관련있는 (related) 서비스의집합 c. vxlan tunnel 을이용한 overlay network

( 문제 3) abcd1234 라는 id 를가지는 Docker container 를수행하고있습니다. stop 한후다시 start 시키는명령은각각무엇인가요? 답 $ docker stop abcd1234 $ docker restart abcd1234

( 문제 4) Docker Compose 와 Docker Swarm 을 3 줄이내로비교해주세요. ( 답 ) Single Host for Docker-Compose vs. Multi-host cluster for Swarm Dockfile vs. YAML 파일 Service 중심 vs. Server + Stack 으로의확장

( 문제 5) Orchestration 소프트웨어의기능을생각나는대로나열해주세요 ( 답 ) Reconsiling the desired state Replicated and Global servcies Service discovery Routing & Load balancing

( 과제 1) JAVA 개발자로서다음의프로그램을 Docker container 로만들어서배포하고자합니다. (a) 이를위한 Dockerfile 을작성하세요. (b) 위의 Dockerfile 을수행하는명령어를작성하세요. (-t tomcat_app 으로 tag 를주세요 ) 여기에는이미지 build 와 container run 을포함합니다. [ 조건 ] (1) 운영체제는 Ubuntu 16.04 로하되자동 OS update 를한다. (apt-get update) (2) JAVA 는 Oracle Java version 7 을이용하되 JAVA_HOME 을 /usr/lib/jvm/java-8-oracle 로지정한다. (3) Apache Tomcat version 8.5.35-jre10 를이용한다. (4) /usr/local/tomcat 을 CATALINA_HOME 으로지정하고프로그램전체의 working directory 로도이용한다. (4) 개발자가작성한 web 프로그램은 Host 컴퓨터현행디렉토리기준으로./webapp 에있다.

./webapp/index.jsp 의내용 <!doctype html> <h1>it works!</h1> <% for (int i = 0; i < 5; ++i) { out.println("<p>hello, world!</p>"); } %> 이를 Container 의 /usr/local/tomcat/webapps/webapp 에복사하여실행한다. 단개발된프로그램중압축된것은자동으로압축해제한다. (5) 컨테이너가실행될때 port 는 8080 을열어준다. (6) 컨테이너가실행되는즉시위의복사된실행파일내의 catalina.sh 을실행토록하되이를위해서 catalina.sh 을 chmod +x 로실행모드로바꾸어준다.

답 FROM tomcat:8.5.35-jre8-ubuntu ADD./webapp /usr/local/tomcat/webapps/webapp EXPOSE 8080 CMD chmod +x /usr/local/tomcat/bin/catalina.sh CMD ["catalina.sh", "run"] ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATH RUN mkdir -p "$CATALINA_HOME" WORKDIR $CATALINA_HOME $ docker build -t tomcat_app. $ docker run -it -p 8787:8080 tomcat_app

( 과제 2) 다음 c++ 파일을 docker container로만드는 dockerfile을작성하세요 my_test.cpp #include <iostream> int main(int argc, char const *argv[]) { std::cout << "Hello Docker container!" << std::endl; return 0; } 조건 a. 컴파일러는 gcc version 4.9로한다. b. container의 working directory는 /usr/src/dockertest로한다. c. 서버의 current directory에존재하는위의소스프로그램을위의 container working directory에복사. d. Container가수행될때 g++ 로컴파일하여 my_prog라는이름의 binary 파일을생성한다. e. 컴파일된실행파일 (my_prog) 을즉시실행한다.

답 # Get the GCC preinstalled image from Docker Hub FROM gcc:4.9 # Copy the current folder which contains C++ source code to the Docker image under /usr/src COPY. /usr/src/dockertest1 # Specify the working directory WORKDIR /usr/src/dockertest1 # Use GCC to compile the Test.cpp source file RUN g++ -o Test Test.cpp # Run the program output from the previous step CMD ["./Test"]`` $ docker build -t test_cpp.

과제 3) 다음조건을만족시키는 docker compose yaml 파일을작성하세요. (1) version: 3 (2) services 에는다음의 2 개서비스를지정 (2-1) nginx 서비스로서 host 의 /home/user/nginx-configuration 를 container 상의 /etc/nginx 에 mapping 하여 mount port open 은 host 와 container 모두 80 (2-2) Maria DB 를가져와서 root password = my-password 로설정

답 version: '3' services: nginx: image: nginx:latest volumes: - /home/user/nginx-configuration:/etc/nginx ports: - 80:80-443:443 mydb: image: mariadb environment: - MYSQL_ROOT_PASSWORD=my-password

( 과제 4) wordpress 서비스를 docker container 로진행하고자합니다. 이를위한 docker-compose 용 yaml 파일을작성하세요. ( 요청사항 ) database: mysql 최신버전 mysql root password: secret mysql 생성하는 database 명 : wordpress_db mysql user: test mysql user password: secret2 wordpress: wordpress 최신버전 depend on: - db port mapping: 호스트의 8000 번을 container 의 80 번에 map 환경변수 wordpress_db_host: db:3306 wordpress_db_user: test wordpress_db_password: secret

version: '3' 답 services: db: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: hugesecret MYSQL_DATABASE: wordpress MYSQL_USER: test MYSQL_PASSWORD: secret wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: on-failure environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: test WORDPRESS_DB_PASSWORD: secret

yaml 파일

일반 YAML 은 case sensitive, 확장자는.yaml Indentation & Separation Indent 시 tab 은인정되지않음 Indentation of whitespace 을통해 structure 표현 spaces are allowed instead Multiple documents with single streams 은 3 hyphen (---) 이용 List List members are denoted by a leading hyphen (-). List members are enclosed in square brackets and separated by commas. Associative arrays colon ( : ) 으로 key value pair 구분 enclosed in curly braces {}.

YAML 파일의요소 Conventional Block Format List 의시작은 hyphen+space --- # Favorite movies - Casablanca - North by Northwest - The Man Who Wasn't There Inline Format delimited with comma and space and the items are enclosed in JSON. --- # Shopping list [milk, groceries, eggs, juice, fruits] Folded Text Newline 은 space 로변환하고 leading whitespace 는제거 - {name: John Smith, age: 33} - name: Mary Smith age: 27

a: b: - c - d - e f: "ghi" men: [John Smith, Bill Jones] women: - Mary Smith - Susan Williams

Collection 과 Structure Collection 에서 Block sequence 는각항목을 dash and space (-) 로표현. Block collection 은 key value pair 가포함되므로다른 scalar quantity 와구별됨. Mapping 은 JSON 구조에서와같이 key value 를나타냄. key value pair 의구별은 colon 과 space (:).

sequence of scalar scalar-to-scalar 의 mapping - Mark Joseph - James Stephen - Ken Griffey hr: 87 avg: 0.298 rbi: 149 scalar-to-sequence 의 mapping European: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves

Kubernetes

Kubernetes Architecture Nodes Node Status Addresses Conditions Capacity and Allocatable Info Master-Node communication Concepts Underlying the Cloud Controller Manager

Capacity and Allocatable Info Noe 에서의가용자원을표현 : CPU, memory, max number of pods that can be scheduled onto the node. Capacity block 에서의 field 에는 : total amount of resources that a Node has. Allocatable block indicates the amount of resources that on a Node that are available to be consumed by normal Pods. Node 의일반정보표현 kernel version, Kubernetes version (kubelet and kube-proxy version), Docker version (if used), OS name. The information is gathered by Kubelet from the node.

Node Controller = a Kubernetes master component which manages nodes. node 의생애전체를통해여러역할을담당. (i) assign a CIDR block to the node when registered (if CIDR assignment is turned on). (ii) keep the node controller s internal list of nodes up to date with the cloud provider s list of available machines. 실행시조금이라도 node 에문제가있으면 node controller 가확인. (iii) monitor nodes health. responsible for updating NodeReady condition of NodeStatus to ConditionUnknown when a node becomes unreachable (i.e. the node controller stops receiving heartbeats for some reason, e.g. due to the node being down), and then later evicting all the pods from the node (using graceful termination) if the node continues to be unreachable. checks the state of each node every --node-monitor-period seconds.

Self-Registration of Nodes When kubelet flag --register-node is true (default), kubelet will attempt to register itself with the API server. This is the preferred pattern, used by most distros. For self-registration, kubelet is started with following options: --kubeconfig --cloud-provider --register-node --register-with-taints --node-labels --node-status-update-frequency

Management Pod 및 service 와는달리 node 는원래 Kubernetes 자체에규정된개념은아님 is created externally by cloud providers like Google Compute Engine, or it exists in your pool of physical or virtual machines. 따라서 node 를생성하면이에대한 object 가생성됨. 생성후 Kubernetes checks whether the node is valid or not.

DevOps 문제

실습 ( 계획 ) Pod 생성 $ kubectl create f pod.yml $ kubectl get pods pod.yaml

서비스생성 $ kubectl get service $ minikube service ghost svc.yaml

Repliction $ kubectl get pods $ kubectl get rs $ kubectl scale rs rs.yamluv

출처 : https://www.quora.com/what-is-docker-in-devops

출처 : https://www.quora.com/what-is-docker-in-devops

관점 Developer: Build once run everywhere QA/Testing: Reliable and coordinated environments between test and production Sys-admin Config once, run anything Operational team: Unified solution for building, shipping, and scaling software. Enables to focus on features, bugs and shipping better software rather than setting up and maintaining environment and tools.