+ All Categories
Home > Documents > Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry...

Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry...

Date post: 14-Aug-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
58
Simplifying Embedded and IoT Development Using Linux Containers Yan Vugenfirer - [email protected] Dmitry Fleytman, PhD - [email protected]
Transcript
Page 1: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Simplifying Embedded and IoT Development Using Linux Containers

Yan Vugenfirer - [email protected] Dmitry Fleytman, PhD - [email protected]

Page 2: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

We feel developers’ pain

Page 3: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Build environments frustration

Conflicts

Toolchains

Packages Versions

Compilers

Updates

Page 4: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Build environments frustration

It works on my machine!!!

Page 5: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Solution

Leverages containers technology Seamless usage of multiple environments Environments are easily created and shared No more “works on my machine”

Page 6: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.
Page 7: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Underlying magic

Leverages Linux containers

Enables correct file permission and ownership

Works on any modern OS

Page 8: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

What are containers?

Linux Containers - is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.

Page 9: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

What is container’s image?

A lightweight, stand-alone, executable package that includes everything needed to run a piece of software, including the code, a runtime, libraries, environment variables and config files.

Page 11: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Architecture

Environments registry

Rebuild native registry

DockerHub Docker private registry

Rebuild CLI

Docker Engine

Page 12: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Rebuild CLI

Page 13: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts

Seamless usage for developer

No knowledge of Docker, Docker files or other container technologies is needed

Page 14: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Manage local environments

Manage environments on local machine

List - lists local environments

Remove (rm) - deletes local environment

Save\load - saves or loads to\from container image

Page 15: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Environment names and versioning

name:tag

Name - environment ID

Tag - should be used for tracking the version of the environment

Page 16: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Deploy

Deploy environment from remote registry to local machine

Search repository for environments

Need to be done once

Environment can be instantly used after deployment

Page 17: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: RunRun the environment

Environment doesn’t change in the process of running

Can be used in interactive mode or to run just one command

Changes to local files are preserved with correct permissions and ownership

Page 18: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Create

Create new environment

From base image from DockerHub

From archive of a file system

Page 19: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Modify, status and commit

Change existing environment

Modify - instructs rebuild to track changes in existing environment

Status - shows environments’ status

Commit - saves the changes and create new tag for the environment

Page 20: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

CLI concepts: Publish

Share your work

“Pushes” the environment to repository

Page 21: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Images saved to public cloud

Images can be shared with everybody

Images from official repositories can be used as base images for new environments

Registry: DockerHub

Page 22: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Registry: Docker private registry

Docker enterprise or community addition of private registry

Internal to your organisation

Might need additional configurations

Page 23: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Registry: Rebuild Native registry

Easy to deploy and use in production

Lightweight

Internal for your organisation

No configuration is needed

Page 24: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Supported OSes

Page 25: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Installation

Page 26: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Installation - dependencies

Docker engine

Ruby 2.0+

Page 27: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Installation

Page 28: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Quick start

Run: rbld help

Already configured to deploy environments from Rebuild DockerHub repositories

Can create environments based on DockerHub

Page 29: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Get Help

Page 30: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

$HOME/.rbld/rebuild.conf

#DockerHub REMOTE_NAME=origin REMOTE_TYPE_origin="dockerhub" REMOTE_origin="<NAMESPACE>/<REPOSITORY>"

Configuration: DockerHub

Page 31: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Configuration: Rebuild registry

$HOME/.rbld/rebuild.conf

#Rebuild registry REMOTE_NAME=origin REMOTE_TYPE_origin="rebuild" REMOTE_origin="<ABSOLUTE PATH TO REGISTRY ROOT DIRECTORY>"

Page 32: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

$HOME/.rbld/rebuild.conf

#Docker registry REMOTE_NAME=origin REMOTE_TYPE_origin="docker" REMOTE_origin="<REGISTRY IP>:<PORT>"

Configuration: Docker Registry

Page 33: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment deployment

Page 34: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment deployment - search in registry

Page 35: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment deployment

Page 36: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment deployment

Page 37: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Usage

Page 38: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Usage - single command

Page 39: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Usage - interactive

Page 40: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment creation

Page 41: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment creation

[test@rebuild-fedora23-1~]$rbldcreate--baseubuntu:15.10ubuntu1510

Downloadingthebaseimage...Tryingtopullrepositorydocker.io/library/ubuntu...15.10:Pullingfromlibrary/ubuntu

...

Successfullycreatedubuntu1510:initial

Page 42: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment creation

[test@rebuild-fedora23-1~]$rbldcreate--basefilealpine34.tar.gzalpine34

Buildingenvironment...

...

Successfullycreatedalpine34:initial

Page 43: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment modification

Page 44: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Modify[test@rebuild-fedora23-1~]$rbldmodifyubuntu1510--\"sudoapt-getupdate&&\sudoapt-getinstall-ygcc"

Initializingenvironment[.....]>>>rebuildenvubuntu1510:initial-M>>>sudoapt-getupdate&&sudoapt-getinstall-ygccHithttp://archive.ubuntu.comwilyInRelease

...

Processingtriggersforlibc-bin(2.21-0ubuntu4.3)...<<<rebuildenvubuntu1510:initial-M

Page 45: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Modify - interactive mode

[test@rebuild-fedora23-1~]$rbldmodifyubuntu1510:initial

Initializingenvironment[.....]>>>rebuildenvubuntu1510:initial-Minteractive>>>PressCTRL-Ddoleavetest@ubuntu1510:initial-M:~$

Page 46: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Get status

[test@rebuild-fedora23-1~]$rbldstatus

modified:ubuntu1510:initial

Page 47: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Commit changes to environment

[test@rebuild-fedora23-1~]$rbldcommit--tagv001

Page 48: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Revert changes

[test@rebuild-fedora23-1~]$rbldcheckoutubuntu1510:initial

Page 49: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Environment-wide variables[test@rebuild-fedora23-1~]$rbldmodifyubuntu1510:initial

Initializingenvironment[.....]>>>rebuildenvubuntu1510:initial-Minteractive>>>PressCTRL-Ddoleavetest@ubuntu1510:initial-M:~$sudovi/rebuild/rebuild.rctest@ubuntu1510:initial-M:~$cat/rebuild/rebuild.rc#Thisistherebuildenvironmentdefinitionfile.#Definerequiredenvironmentvariableshere.##NOTE:Makesuretoprefixdefinitionswith#'export'directive,i.e.#exportMY_PATH=/path/to/some/locationexportCC=clang

test@ubuntu1510:initial-M:~$exit<<<rebuildenvubuntu1510:initial-M

Page 50: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

gitclonegit://github.com/raspberrypi/tools.gitrpi-tools

rbldcreate--baseubuntu:16.04rpi-raspbian

rbldmodifyrpi-raspbian:initial

>>sudoapt-getupdate>>sudoapt-getinstall-ymake>>TOOLCHAIN=gcc-linaro-arm-linux-gnueabihf-raspbian-x64>>sudocp-rrpi-tools/arm-bcm2708/$TOOLCHAIN/>>echoexportCC=/$TOOLCHAIN/bin/arm-linux-gnueabihf-|sudotee-a/rebuild/rebuild.rc>>exit

rbldcommitrpi-raspbian--tagv001

Putting all together

Page 51: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Sharing environments - publishing to registry

[test@rebuild-fedora23-1~]$rbldpublishqemu-fc22:v001

Checkingforcollisions...

Publishingat10.0.110.110:5000...

...

Successfullypublishedqemu-fc22:v001

Page 52: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Sharing environments - saving and loading from file

[test@rebuild-fedora23-1~]$rbldsaveqemu-fc20:v001

Successfullysavedenvironmentqemu-fc20:v001toqemu-fc20-v001.rbld

[test@rebuild-fedora23-1~]$rbldloadqemu-fc20-v001.rbld

Successfullyloadedenvironmentfromqemu-fc20-v001.rbld

Page 53: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

DebuggingRebuild CLI

RBLD_LOG_LEVEL - info, warn, error and fatal

RBLD_LOG_FILE - save logs to file

Environment bootstrap tracing

RBLD_BOOTSTRAP_TRACE - set to 1 to enable environment startup tracing for rbld run and rbld modify.

Page 55: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Summary

Seamless usage

Isolated environments

Easy to share the environments between team members

Page 56: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Enterprise Dashboard with role management

Multiple registries support

Support for additional image registries

USB redirection for non-Linux hosts

Future plans

Page 57: Simplifying Embedded and IoT Development Using Linux ... · Architecture Environments registry Rebuild native registry Docker private DockerHub registry Rebuild CLI Docker Engine.

Recommended