41
輕鬆打造持續 整合開發環境 台灣攻城獅 Doro Wu | QNAP 使用 QNAP Docker

QNAP MOPCON 2015 - 輕鬆打造持續整合開發環境,使用 QNAP Docker

Embed Size (px)

Citation preview

Page 1: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

輕鬆打造持續整合開發環境

台灣攻城獅 Doro Wu | QNAP

使用 QNAP Docker

Page 2: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Doro Wu’s profile, https://github.com/fcwu

Page 3: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

NAS

Page 4: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

正常使用

• 備份資料• 下載影片• 看影片

自從知道 QNAP, A牌有支援 HDMI輸出後我就再才不買 S 牌

Page 5: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

攻城獅使用

• Busybox!!• apt/yum !!• HDD layout!!

Page 6: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

攻城獅觀點

這什麼怪系統

(迷之音)你可以抓他們的 toolchain自己 build 你要的東西

(心理是這麼想)不如我買台機器自己灌個Ubuntu 好了AWS, linode, Azure…

Page 7: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Virtualization

• 虛擬化讓我可以跑各種作業

系統

• 基於 KVM

• 網頁可直接操作 VM

• 網頁可直接瀏覽桌面 (noVNC)2014

2015

Page 8: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 9: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 10: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Container Station

• Light-weight, fast and small

• Same kernel

• Namespace, cgroup, capability

2015

Page 11: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 12: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 13: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

One-Click App

一鍵架設 Docker Private Registry,GitLab,Joomla

Page 14: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 15: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Auto Configuration

$ docker run -p 6379 -v /data redis

Page 16: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

ARM

Page 17: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

LXC & Docker

輕鬆跑 Linux App真 OS

Page 18: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Containerized App

當一個 App 有多個 Containers時,像 GitLab

Page 19: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker
Page 20: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Docker compose

搭建自己的 Docker App,照官方標準作法

Page 21: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Custom Repo

Page 22: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Container API

Page 23: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Docker Cert

Page 24: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

持續整合發佈

Page 25: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

工具

Tools for DevOps, http://newrelic.com/devops/toolset

Page 26: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

QCS我們用到了…

• Infrastructure

• Gitlab

• Jenkins

• Docker Private Registry

• Virtualization

• VirtualBox

• Vagrant

• Docker

• LXC

• Packer

• Configuration Management

• Docker Compose

• Ansible

• Fabric

• Document and Test

• Sphinx

Page 27: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

持續整合環境

JenkinsCI Server

GitlabVCS

Testbed

Docker

Private

Registry

Archive

polling

KVM

Page 28: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

使用 QCS 輕鬆建立 CI 基礎設施

QNAP Container Station - Create CI Environment https://youtu.be/434dTxMRyDs

Page 29: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Build

JenkinsCI Server

GitlabVCS

Testbed

Archive

1. polling

KVM

2. Trigger

3. Pull

5. Build

6. Artifact

Docker

Private

Registry

4. Clone

• Docker image for building image

• Docker image for uploading artifact

Page 30: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Deploy

JenkinsCI Server

GitlabVCS

Testbed

Archive

KVM

1. Trigger

2. Pull

3. Fetch

4. Deploy

Docker

Private

Registry

• Docker image for downloading artifact

• Docker image for deploying to target

Page 31: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Test

JenkinsCI Server

GitlabVCS

Testbed

Archive

KVM

1. Trigger

2. Pull

4. Test

5. Report

Docker

Private

Registry

3. Clone

• Docker image for running test suits

• Docker image for uploading image

Page 32: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

以Container Station 為例

• 所有行為皆在 Docker container 裡完成

• 需用到的 Docker images

• Build source code and Test

• Operate archive and Deploy

• Jenkins Job 自動更新 Docker images

Page 33: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Automate

Page 34: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Automate

Build

Page 35: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Automate

Deploy

Page 36: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Automate

Test

Page 37: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Automate

Rebuild Docker images

Page 38: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

開發環境

VirtualBox + Vagrant

Building on NAS

Packer template in

JSON

Run Packer on LXC Ubuntu

Provisioning with Ansible

Vagrant box Upload

Page 39: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

KVM in Docker

Running KVM in docker container with QNAP Container Stationhttps://youtu.be/gxhBcuIFAfU

Page 40: QNAP MOPCON 2015 -  輕鬆打造持續整合開發環境,使用 QNAP Docker

Wrap Up

• Virtualization Station

• Container Station

• ARM

• One-click App

• Auto container configuration

• Continuous Integration

• Gitlab, Jenkins, Docker Private Registry

• Everything is running on container