SlideShare uma empresa Scribd logo
1 de 77
Linux 없이 Linux 에서 개발하기
G r e a t T e c h n o l o g y F o r G r e a t G a m e s
김진욱
jinuk.kim@ifunfactory.com
2
목표
• Windows / macOS 용의 널리 쓰이는 툴을 써서
• 각 OS 에 구성할 수 있는 linux 개발 환경을 제안
• 여기서 실제로 동작하는 모습을 확인
3
개발 환경: 원하는 것
• Linux 기반의 라이브러리와 서비스를 쓰고 싶다
• Windows / macOS 에서 개발하고 싶다
• GUI 툴이 더 좋다
• 여러 개의 가상 환경을 개발 PC/랩탑 하나에서
모두/한꺼번에 다루고 싶다
01 Docker 로 linux 개발환경 만들기
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
1. Docker
2. 어떻게 동작하는가
3. 어떻게 사용하는가
6
Docker
• Linux 기반*
• 얇고/가벼운 가상화 환경
• 개별 디스크 (=이미지) 를
각각의 얇은 VM (=컨테이너)
으로 사용하는 방식
7
가벼운 가상화 (?)
VM 보다 더 적은 자원 (메모리, 디스크) 을 쓴다
랩탑에서도 동시에 여러 docker 컨테이너 사용 가능
8
가벼운 디스크 형식
공통 이미지를 수정하면 변경 사항이 덧 씌워지는 방식
9
OS 지원
• Windows / macOS 정식 지원 시작 (2016-07)
Docker For Mac And Windows Is Now Generally Available And Ready For Production
• Windows 를 컨테이너 안에서 쓰기:
Windows Containers on Windows Server (Windows Server 2016; 출시전)
C++ 프로젝트를 빌드하는
Docker 컨테이너를 띄워봅시다
11
환경 설정: Dockerfile
• 하나의 docker 컨테이너를 설정하는 파일
• 다음과 같은 구성 요소를 갖는다:
• 기본 컨테이너 이미지 (FROM)
• 추가 설정 작업 (쉘 명령; RUN …)
• 외부에 열어놓을 포트 목록 (EXPOSE)
• 외부에서 가져와서 공유할 디렉터리 (VOLUME)
• 실제로 할 작업 (ENTRYPOINT …)
12
Example: 이미지 만들기
• Ubuntu 16.04 (xenial)
• g++,cmake 를 설치
• /workspace 공유 폴더
• 8000 포트를 연다
• docker build --rm -t cpp-builder .
(Dockerfile 이 있는 디렉터리에서 실행)
13
Example: 이미지 만들기 (2)
14
Example: 컨테이너 띄우기
• 빌드한 이미지는 컨테이너로 띄워서 사용합니다.
• 예를 들어 crow 라는 프로젝트를 빌드해봅시다:
02 GUI를 쓰고 싶습니다
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
16
Goal
• 명령행에서 작업하는 걸 피하고 싶다
• GUI 툴을 찾아서 쓰자
17
Kitematic: docker run
18
Kitematic: GUI로 대체하자
19
다른 작업은?
• Dockerfile 의 Volume: 공유 디렉터리처럼 동작
• 소스코드를 OS / Docker 컨테이너 사이에 공유하고,
GUI 도구는 Windows / macOS에서 실행
• 예를 들어,
20
SourceTree (git client)
21
GitHub Desktop
22
…
• 컴파일러나 링커와 직접 상호작용하지 않는 대부분
의 툴은 개발하는 PC에서 바로 사용한다
• 빌드 툴 (컴파일러/링커…) 만 docker 안에서 명령행
으로 돌린다 (?)
23
Docker + IDE 환경?
• Windows / macOS 사용자에게 GUI가 더 편하다
• 다음 작업은 GUI에서 하고 싶다:
• 편집 (+자동 완성)
• 다른 심볼 (함수, 변수, 클래스 정의 …) 참조
• 디버깅
• 어떻게 해야할까?
03 개발 환경도 GUI를 쓰고 싶습니다
On Windows
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
1. VisualStudio + Docker
2. 상호작용 방식
3. 실제로 어떻게 설정하는가
26
Windows: VisualStudio
27
Visual C++ for Linux Development
• Microsoft 에서 제작하는 linux 개발용 VS 확장기능
• C++ 원격 개발 지원
• Windows + VisualStudio에서 원격으로
• 빌드
• 소스코드 편집
• 디버깅
28
어떻게 동작하는가?
• VisualStudio 가 linux 서버와 직접 통신 (SSH)
• 사용자가 지정한 빌드/디버깅 명령을 실행
• 소스코드는 Windows 쪽에서 linux 쪽으로 복사
29
컨테이너로 바꿉시다
• g++, gdb, … 을 설치 (필요한 빌드툴/라이브러리)
• SSH 서버를 설치 + 설정
• 컨테이너를 실행하면 SSH 서버를 실행
• 소스코드를 공유할 volume 정의
• SSH용 22 포트를 외부로 연다
30
컨테이너 띄우기
• Dockerfile
• SSH 포트 지정
• Volume 지정에 주의*
• 디버거가 동작하기 위해서 권한이 더 필요
31
Windows: VisualStudio (1)
• 소스코드는 docker volume 으로 공유
• Port 는 docker 에서 포워딩한 ssh 포트를 이용
32
Windows: VisualStudio (2)
• 소스코드 복사는 불필요 (volume 을 양쪽에서 공유)
대신, 소스코드 디렉터리를 프로젝트 설정에서 지정
• 직접 지정할 프로젝트 설정이 잔뜩 있습니다:
• 빌드, 디버깅 명령
• 빌드 결과물 나열
• …
33
Windows: misc.
• Docker 가 디버거에 필요한 일부 권한을 컨테이너에
게 주지 않는다: 컨테이너를 privileged 상태로 실행
• Docker For Windows 의 공유 드라이브를 꼭 설정
Example:
C++ 프로젝트에
디버거를 붙여봅시다
35
Example
• 필요한 툴들을 넣어서 컨테이너를 띄웁니다
(예제로 사용한 Dockerfile)
• 이미지에는 g++, gdb… 등을 포함
• Kitematic 에서 디버깅을 위한 설정
• VisualStudio 에서 빌드/디버깅/소스코드 위치를 하
나씩 지정 (…)
36
Example: Kitematic 설정 (ports)
37
Example: Kitematic 설정 (volume)
38
Example: Kitematic 설정 (advanced)
39
Example: VS 설정
원격 프로젝트의
• 소스코드 디렉터리
• 디버깅 대상 (실행 파일, 인자, CWD, …)
• 서버로 소스코드 복사해야할지 여부
• 빌드 전에 할 작업
• 빌드 / 초기화 / 다시 빌드 명령어
40
Example: VS 설정 (1/5)
41
Example: VS 설정 (2/5)
42
Example: VS 설정 (3/5)
43
Example: VS 설정 (4/5)
44
Example: VS 설정 (5/5)
45
Example: Linux 서버 연결 설정
처음 빌드할 때 서버와 어떻게 연결할지 지정
46
아직 해결 안된 것
• Visual C++ for Linux 가 아직 beta
• 빌드 / 디버깅 명령을 하나씩 지정해줘야 하는 문제
• Docker for Windows 쪽에서 공유 드라이브 설정을
해줘야 volume 이 동작 (없이는 빈 폴더로 처리됨)
47
광고: 아이펀엔진
• 아이펀엔진도 VS 확장 기능을 써서 개발 가능
• 자체 제작한 VisualStudio 확장 기능으로 디렉터리/빌
드/디버거 설정 등등을 자동으로 처리
비슷하게, 다른 프로젝트에서도 내부 설정을 위한 플러
그인을 만들면 해결됩니다 (?)
04 개발 환경도 GUI를 쓰고 싶습니다
On macOS
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
1. Nuclide + Docker
2. 상호작용 방식
3. 실제로 어떻게 설정하는가
50
macOS: Nuclide in Action
51
macOS: Nuclide
• Facebook 의 OpenSource IDE (macOS / linux)
• Atom 에 IDE 기능을 추가
• 원격 편집, 디버거 (lldb) 연동 지원, 일부 환경의 빌드
• C++ / Hack / Python / JavaScript / … 언어 지원
• Native app. / ReactNative / Android / iOS 지원
52
어떻게 동작하는가?
• IDE가 원격 서버와 SSH / JSON RPC 로 통신
• 원격 서버의 buck 을 이용해서 빌드
• lldb 를 이용해서 디버깅
• 소스코드는 원격 서버에 있는 시나리오
53
컨테이너로 바꿉시다
• node.js, python, clang, … 을 설치
• 여기서도 SSH 서버가 필요
• SSH용 22, 디버거가 사용할 9090-9093 포트 준비
• 소스코드를 공유할 volume 정의
54
macOS: Nuclide 설정 (1)
• 소스 코드는 docker volume 으로 공유한다
• Nuclide에서 준비한 컨테이너에 연결해서 작업한다
55
macOS: Nuclide 설정 (2)
• Docker 컨테이너 쪽에 SSH 공개키 로그인하게 수정
• Atom 의 원격 프로젝트 (remote project) 로 docker 쪽의 주소
를 추가해준다
• 현재는 아래 기능이 원격으로 동작한다:
• 디버깅 (lldb)
• 코드 분석 (clang 기반)
• 빌드: buck 을 쓰는 경우만
56
macOS: misc.
• Docker 가 디버거에 필요한 일부 권한을 컨테이너에
게 주지 않는다: 컨테이너를 privileged 상태로 실행
• Nuclide 가 디버거/분석 툴과 통신하는 port (9090-
9093) 는 호스트 쪽에도 해당 포트로 열려있어야 정상
동작한다
Example:
C++ 프로젝트에
디버거를 붙여봅시다
58
Example: 컨테이너 생성
• 앞에서 설명한 컨테이너를 띄웁니다 (Dockerfile)
59
Example: Kitematic 설정 (ports)
60
Example: Kitematic 설정 (volume)
61
Example: Kitematic 설정 (advanced)
62
Example: Nuclide 설정 (remote)
63
Example: Nuclide 설정 (debugger)
64
미묘한 부분들
• clang 분석 기능
• 헤더 검색 경로에 컴파일러 기본 경로가 비포함
• Buck 을 안 쓰면 표준 헤더에서 경고 띄울 때가 있다
• clang/llvm 배포판에 따라 동작 안하는 문제
• libclang.so, libLLVM.so … 등이 경로를 수동으로 지정해줘
야 한다
05 실제 개발 환경은 어떻게?
외부 서비스를 포함한 구성 지원
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
66
Docker Compose
67
Docker Compose
• 여러 개의 docker 컨테이너를 설정하기 위한 용도
• 하나의 compose 설정은 여러 개의 서비스를 정의:
• 서비스 = docker 컨테이너
• 각 서비스가 포트, 볼륨, … 등을 노출한다
• 각 서비스가 서로 다른 docker 이미지를 이용해서
서비스를 정의한다
68
Example: 설정
• 각각의 서비스를 지정
• 필요한 포트를 열고
• 유지할 데이터를 볼륨으로
컨테이너에 붙이고
• 각 컨테이너는 links 로
나열한 서비스를 DNS 로
접근해서 사용
69
Example: 컨테이너 띄우기
• compose 설정 + 개별 이미지 설정
• docker-compose up -d: 컨테이너를 모두 띄운다
• 이미지가 없다면 개별 이미지 설정 써서 빌드
• 이미지가 있다면 해당 이미지를 빌드
70
TIPS: DockerHub 컨테이너 쓰기
• 이미 만들어놓은 이미지는 쉽게 띄울 수 있다
• MySQL / MariaDB 혹은 redis 처럼 널리 쓰는 서비스
는 공식 이미지가 존재한다
• 해당 이미지를 compose 설정 파일에 넣어주면 (자동
으로 가져와서) 컨테이너로 띄워준다
06 테스트 환경 만들기
SW 엔지니어 작업 환경을 넘어서기
Great Technology For Great Games
2016 아이펀팩토리 Dev Day
72
개발 환경에서 테스트 환경으로
• SW 엔지니어가 아닌 사람에게도 독립된 환경을 제공하려면?
• 문제:
• 어떻게 docker 컨테이너를 배포할까?
• 제한된 자원으로 어떻게 서비스를 여러개 띄울까?
73
Docker Swarm
• Docker 를 여러 대의 서버에 나눠서 띄워주는 환경
• 서비스: swarm에 떠 있는 컨테이너 (…보다는 복잡)
• docker service create …
• swarm 어딘가에 서비스를 생성한다
• 따로 사용할 수 만큼 (이름을 붙여서) 생성
74
Docker Registry
• Docker 이미지들을 보관/변경/얻어오는 저장소
• Docker 이미지 형태로 제공된다 (예: registry:2)
• 이미지를 실제로 저장할 volume 필요
• HTTP 요청을 보호할 TLS 인증서 필요*
75
Docker Swarm + Registry
iFunFactory
jinuk.kim@ifunfactory.com
www.ifunfactory.com
+82-70-4923-6566
Q&AG r e a t T e c h n o l o g y F o r G r e a t G a m e s , i F u n F a c t o r y
iFunFactory
jinuk.kim@ifunfactory.com
www.ifunfactory.com
+82-70-4923-6566
THANKS!G r e a t T e c h n o l o g y F o r G r e a t G a m e s , i F u n F a c t o r y

Mais conteúdo relacionado

Mais procurados

Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 
Using Kafka in your python application - Python fwdays 2020
Using Kafka in your python application - Python fwdays 2020Using Kafka in your python application - Python fwdays 2020
Using Kafka in your python application - Python fwdays 2020Oleksandr Tarasenko
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaArvind Kumar G.S
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective GitChanwoong Kim
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기Sangik Bae
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdfJo Hoon
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편준철 박
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 

Mais procurados (20)

Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Using Kafka in your python application - Python fwdays 2020
Using Kafka in your python application - Python fwdays 2020Using Kafka in your python application - Python fwdays 2020
Using Kafka in your python application - Python fwdays 2020
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
 
Prometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome MonitoringPrometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome Monitoring
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
GitOps with Gitkube
GitOps with GitkubeGitOps with Gitkube
GitOps with Gitkube
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 

Destaque

Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsNVIDIA
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
U2 product For Wiseeco
U2 product For WiseecoU2 product For Wiseeco
U2 product For Wiseeco호진 하
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
 
Global mobile market report
Global mobile market reportGlobal mobile market report
Global mobile market reportChang Kim
 
Pure Function and Honest Design
Pure Function and Honest DesignPure Function and Honest Design
Pure Function and Honest DesignHyungho Ko
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYAnaya Medias Swiss
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
1, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v21, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v2Dongsun Moon
 
클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStackChoe Cheng-Dae
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...OpenStack Korea Community
 
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기OpenStack Korea Community
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화Jay JH Park
 
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업OpenStack Korea Community
 
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing SystemOpenStack Korea Community
 
세션5. web3.js와 Node.js 를 사용한 dApp 개발
세션5. web3.js와 Node.js 를 사용한 dApp 개발세션5. web3.js와 Node.js 를 사용한 dApp 개발
세션5. web3.js와 Node.js 를 사용한 dApp 개발Jay JH Park
 
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기OpenStack Korea Community
 
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-GeneOpenStack Korea Community
 

Destaque (20)

Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated Applications
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
U2 product For Wiseeco
U2 product For WiseecoU2 product For Wiseeco
U2 product For Wiseeco
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
 
Global mobile market report
Global mobile market reportGlobal mobile market report
Global mobile market report
 
Pure Function and Honest Design
Pure Function and Honest DesignPure Function and Honest Design
Pure Function and Honest Design
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONY
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
1, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v21, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v2
 
클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
 
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기
[2017년 5월 정기세미나] IBM에서 바라보는 OpenStack 이야기
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
 
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업
[OpenStack Days Korea 2016] Track2 - 가상화 네트워크와 클라우드간 협업
 
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
 
세션5. web3.js와 Node.js 를 사용한 dApp 개발
세션5. web3.js와 Node.js 를 사용한 dApp 개발세션5. web3.js와 Node.js 를 사용한 dApp 개발
세션5. web3.js와 Node.js 를 사용한 dApp 개발
 
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
 
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
 

Semelhante a Docker 로 Linux 없이 Linux 환경에서 개발하기

Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Sangcheol Hwang
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)Sang Don Kim
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)DEVELOPER.NET
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] DockerWonjun Hwang
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsJung Hyun Nam
 

Semelhante a Docker 로 Linux 없이 Linux 환경에서 개발하기 (20)

Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
 
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and Operations
 

Mais de iFunFactory Inc.

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표iFunFactory Inc.
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석iFunFactory Inc.
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP iFunFactory Inc.
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성iFunFactory Inc.
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기iFunFactory Inc.
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교iFunFactory Inc.
 

Mais de iFunFactory Inc. (20)

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
 
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
 
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
 

Último

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Último (6)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

Docker 로 Linux 없이 Linux 환경에서 개발하기

  • 1. Linux 없이 Linux 에서 개발하기 G r e a t T e c h n o l o g y F o r G r e a t G a m e s 김진욱 jinuk.kim@ifunfactory.com
  • 2. 2 목표 • Windows / macOS 용의 널리 쓰이는 툴을 써서 • 각 OS 에 구성할 수 있는 linux 개발 환경을 제안 • 여기서 실제로 동작하는 모습을 확인
  • 3. 3 개발 환경: 원하는 것 • Linux 기반의 라이브러리와 서비스를 쓰고 싶다 • Windows / macOS 에서 개발하고 싶다 • GUI 툴이 더 좋다 • 여러 개의 가상 환경을 개발 PC/랩탑 하나에서 모두/한꺼번에 다루고 싶다
  • 4. 01 Docker 로 linux 개발환경 만들기 Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 5. 1. Docker 2. 어떻게 동작하는가 3. 어떻게 사용하는가
  • 6. 6 Docker • Linux 기반* • 얇고/가벼운 가상화 환경 • 개별 디스크 (=이미지) 를 각각의 얇은 VM (=컨테이너) 으로 사용하는 방식
  • 7. 7 가벼운 가상화 (?) VM 보다 더 적은 자원 (메모리, 디스크) 을 쓴다 랩탑에서도 동시에 여러 docker 컨테이너 사용 가능
  • 8. 8 가벼운 디스크 형식 공통 이미지를 수정하면 변경 사항이 덧 씌워지는 방식
  • 9. 9 OS 지원 • Windows / macOS 정식 지원 시작 (2016-07) Docker For Mac And Windows Is Now Generally Available And Ready For Production • Windows 를 컨테이너 안에서 쓰기: Windows Containers on Windows Server (Windows Server 2016; 출시전)
  • 10. C++ 프로젝트를 빌드하는 Docker 컨테이너를 띄워봅시다
  • 11. 11 환경 설정: Dockerfile • 하나의 docker 컨테이너를 설정하는 파일 • 다음과 같은 구성 요소를 갖는다: • 기본 컨테이너 이미지 (FROM) • 추가 설정 작업 (쉘 명령; RUN …) • 외부에 열어놓을 포트 목록 (EXPOSE) • 외부에서 가져와서 공유할 디렉터리 (VOLUME) • 실제로 할 작업 (ENTRYPOINT …)
  • 12. 12 Example: 이미지 만들기 • Ubuntu 16.04 (xenial) • g++,cmake 를 설치 • /workspace 공유 폴더 • 8000 포트를 연다 • docker build --rm -t cpp-builder . (Dockerfile 이 있는 디렉터리에서 실행)
  • 14. 14 Example: 컨테이너 띄우기 • 빌드한 이미지는 컨테이너로 띄워서 사용합니다. • 예를 들어 crow 라는 프로젝트를 빌드해봅시다:
  • 15. 02 GUI를 쓰고 싶습니다 Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 16. 16 Goal • 명령행에서 작업하는 걸 피하고 싶다 • GUI 툴을 찾아서 쓰자
  • 19. 19 다른 작업은? • Dockerfile 의 Volume: 공유 디렉터리처럼 동작 • 소스코드를 OS / Docker 컨테이너 사이에 공유하고, GUI 도구는 Windows / macOS에서 실행 • 예를 들어,
  • 22. 22 … • 컴파일러나 링커와 직접 상호작용하지 않는 대부분 의 툴은 개발하는 PC에서 바로 사용한다 • 빌드 툴 (컴파일러/링커…) 만 docker 안에서 명령행 으로 돌린다 (?)
  • 23. 23 Docker + IDE 환경? • Windows / macOS 사용자에게 GUI가 더 편하다 • 다음 작업은 GUI에서 하고 싶다: • 편집 (+자동 완성) • 다른 심볼 (함수, 변수, 클래스 정의 …) 참조 • 디버깅 • 어떻게 해야할까?
  • 24. 03 개발 환경도 GUI를 쓰고 싶습니다 On Windows Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 25. 1. VisualStudio + Docker 2. 상호작용 방식 3. 실제로 어떻게 설정하는가
  • 27. 27 Visual C++ for Linux Development • Microsoft 에서 제작하는 linux 개발용 VS 확장기능 • C++ 원격 개발 지원 • Windows + VisualStudio에서 원격으로 • 빌드 • 소스코드 편집 • 디버깅
  • 28. 28 어떻게 동작하는가? • VisualStudio 가 linux 서버와 직접 통신 (SSH) • 사용자가 지정한 빌드/디버깅 명령을 실행 • 소스코드는 Windows 쪽에서 linux 쪽으로 복사
  • 29. 29 컨테이너로 바꿉시다 • g++, gdb, … 을 설치 (필요한 빌드툴/라이브러리) • SSH 서버를 설치 + 설정 • 컨테이너를 실행하면 SSH 서버를 실행 • 소스코드를 공유할 volume 정의 • SSH용 22 포트를 외부로 연다
  • 30. 30 컨테이너 띄우기 • Dockerfile • SSH 포트 지정 • Volume 지정에 주의* • 디버거가 동작하기 위해서 권한이 더 필요
  • 31. 31 Windows: VisualStudio (1) • 소스코드는 docker volume 으로 공유 • Port 는 docker 에서 포워딩한 ssh 포트를 이용
  • 32. 32 Windows: VisualStudio (2) • 소스코드 복사는 불필요 (volume 을 양쪽에서 공유) 대신, 소스코드 디렉터리를 프로젝트 설정에서 지정 • 직접 지정할 프로젝트 설정이 잔뜩 있습니다: • 빌드, 디버깅 명령 • 빌드 결과물 나열 • …
  • 33. 33 Windows: misc. • Docker 가 디버거에 필요한 일부 권한을 컨테이너에 게 주지 않는다: 컨테이너를 privileged 상태로 실행 • Docker For Windows 의 공유 드라이브를 꼭 설정
  • 35. 35 Example • 필요한 툴들을 넣어서 컨테이너를 띄웁니다 (예제로 사용한 Dockerfile) • 이미지에는 g++, gdb… 등을 포함 • Kitematic 에서 디버깅을 위한 설정 • VisualStudio 에서 빌드/디버깅/소스코드 위치를 하 나씩 지정 (…)
  • 39. 39 Example: VS 설정 원격 프로젝트의 • 소스코드 디렉터리 • 디버깅 대상 (실행 파일, 인자, CWD, …) • 서버로 소스코드 복사해야할지 여부 • 빌드 전에 할 작업 • 빌드 / 초기화 / 다시 빌드 명령어
  • 45. 45 Example: Linux 서버 연결 설정 처음 빌드할 때 서버와 어떻게 연결할지 지정
  • 46. 46 아직 해결 안된 것 • Visual C++ for Linux 가 아직 beta • 빌드 / 디버깅 명령을 하나씩 지정해줘야 하는 문제 • Docker for Windows 쪽에서 공유 드라이브 설정을 해줘야 volume 이 동작 (없이는 빈 폴더로 처리됨)
  • 47. 47 광고: 아이펀엔진 • 아이펀엔진도 VS 확장 기능을 써서 개발 가능 • 자체 제작한 VisualStudio 확장 기능으로 디렉터리/빌 드/디버거 설정 등등을 자동으로 처리 비슷하게, 다른 프로젝트에서도 내부 설정을 위한 플러 그인을 만들면 해결됩니다 (?)
  • 48. 04 개발 환경도 GUI를 쓰고 싶습니다 On macOS Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 49. 1. Nuclide + Docker 2. 상호작용 방식 3. 실제로 어떻게 설정하는가
  • 51. 51 macOS: Nuclide • Facebook 의 OpenSource IDE (macOS / linux) • Atom 에 IDE 기능을 추가 • 원격 편집, 디버거 (lldb) 연동 지원, 일부 환경의 빌드 • C++ / Hack / Python / JavaScript / … 언어 지원 • Native app. / ReactNative / Android / iOS 지원
  • 52. 52 어떻게 동작하는가? • IDE가 원격 서버와 SSH / JSON RPC 로 통신 • 원격 서버의 buck 을 이용해서 빌드 • lldb 를 이용해서 디버깅 • 소스코드는 원격 서버에 있는 시나리오
  • 53. 53 컨테이너로 바꿉시다 • node.js, python, clang, … 을 설치 • 여기서도 SSH 서버가 필요 • SSH용 22, 디버거가 사용할 9090-9093 포트 준비 • 소스코드를 공유할 volume 정의
  • 54. 54 macOS: Nuclide 설정 (1) • 소스 코드는 docker volume 으로 공유한다 • Nuclide에서 준비한 컨테이너에 연결해서 작업한다
  • 55. 55 macOS: Nuclide 설정 (2) • Docker 컨테이너 쪽에 SSH 공개키 로그인하게 수정 • Atom 의 원격 프로젝트 (remote project) 로 docker 쪽의 주소 를 추가해준다 • 현재는 아래 기능이 원격으로 동작한다: • 디버깅 (lldb) • 코드 분석 (clang 기반) • 빌드: buck 을 쓰는 경우만
  • 56. 56 macOS: misc. • Docker 가 디버거에 필요한 일부 권한을 컨테이너에 게 주지 않는다: 컨테이너를 privileged 상태로 실행 • Nuclide 가 디버거/분석 툴과 통신하는 port (9090- 9093) 는 호스트 쪽에도 해당 포트로 열려있어야 정상 동작한다
  • 58. 58 Example: 컨테이너 생성 • 앞에서 설명한 컨테이너를 띄웁니다 (Dockerfile)
  • 64. 64 미묘한 부분들 • clang 분석 기능 • 헤더 검색 경로에 컴파일러 기본 경로가 비포함 • Buck 을 안 쓰면 표준 헤더에서 경고 띄울 때가 있다 • clang/llvm 배포판에 따라 동작 안하는 문제 • libclang.so, libLLVM.so … 등이 경로를 수동으로 지정해줘 야 한다
  • 65. 05 실제 개발 환경은 어떻게? 외부 서비스를 포함한 구성 지원 Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 67. 67 Docker Compose • 여러 개의 docker 컨테이너를 설정하기 위한 용도 • 하나의 compose 설정은 여러 개의 서비스를 정의: • 서비스 = docker 컨테이너 • 각 서비스가 포트, 볼륨, … 등을 노출한다 • 각 서비스가 서로 다른 docker 이미지를 이용해서 서비스를 정의한다
  • 68. 68 Example: 설정 • 각각의 서비스를 지정 • 필요한 포트를 열고 • 유지할 데이터를 볼륨으로 컨테이너에 붙이고 • 각 컨테이너는 links 로 나열한 서비스를 DNS 로 접근해서 사용
  • 69. 69 Example: 컨테이너 띄우기 • compose 설정 + 개별 이미지 설정 • docker-compose up -d: 컨테이너를 모두 띄운다 • 이미지가 없다면 개별 이미지 설정 써서 빌드 • 이미지가 있다면 해당 이미지를 빌드
  • 70. 70 TIPS: DockerHub 컨테이너 쓰기 • 이미 만들어놓은 이미지는 쉽게 띄울 수 있다 • MySQL / MariaDB 혹은 redis 처럼 널리 쓰는 서비스 는 공식 이미지가 존재한다 • 해당 이미지를 compose 설정 파일에 넣어주면 (자동 으로 가져와서) 컨테이너로 띄워준다
  • 71. 06 테스트 환경 만들기 SW 엔지니어 작업 환경을 넘어서기 Great Technology For Great Games 2016 아이펀팩토리 Dev Day
  • 72. 72 개발 환경에서 테스트 환경으로 • SW 엔지니어가 아닌 사람에게도 독립된 환경을 제공하려면? • 문제: • 어떻게 docker 컨테이너를 배포할까? • 제한된 자원으로 어떻게 서비스를 여러개 띄울까?
  • 73. 73 Docker Swarm • Docker 를 여러 대의 서버에 나눠서 띄워주는 환경 • 서비스: swarm에 떠 있는 컨테이너 (…보다는 복잡) • docker service create … • swarm 어딘가에 서비스를 생성한다 • 따로 사용할 수 만큼 (이름을 붙여서) 생성
  • 74. 74 Docker Registry • Docker 이미지들을 보관/변경/얻어오는 저장소 • Docker 이미지 형태로 제공된다 (예: registry:2) • 이미지를 실제로 저장할 volume 필요 • HTTP 요청을 보호할 TLS 인증서 필요*
  • 75. 75 Docker Swarm + Registry
  • 76. iFunFactory jinuk.kim@ifunfactory.com www.ifunfactory.com +82-70-4923-6566 Q&AG r e a t T e c h n o l o g y F o r G r e a t G a m e s , i F u n F a c t o r y
  • 77. iFunFactory jinuk.kim@ifunfactory.com www.ifunfactory.com +82-70-4923-6566 THANKS!G r e a t T e c h n o l o g y F o r G r e a t G a m e s , i F u n F a c t o r y