Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
LXD System Containers [en]
Christoph Lühr
March 07, 2017
Technology
0
120
LXD System Containers [en]
Berlin PHP User Group @bephpug, March 7th, 2017
Christoph Lühr
March 07, 2017
Tweet
Share
More Decks by Christoph Lühr
See All by Christoph Lühr
chluehr
0
29
chluehr
1
140
chluehr
0
61
chluehr
1
11k
chluehr
2
210
chluehr
0
140
chluehr
0
170
chluehr
2
140
chluehr
1
130
Other Decks in Technology
See All in Technology
hashhub
3
15k
hayatan
0
150
fufuhu
3
130
sadayoshitada0919
0
130
mito201
1
1.1k
cfisch3r
1
310
tomihisa
1
1.2k
karabish
0
190
adhorn
0
340
yasuyukiyamasaki
1
160
benzookapi
1
140
yshr1200
0
170
Featured
See All Featured
keavy
106
14k
jlugia
216
16k
brianwarren
83
4.7k
mojombo
358
62k
jeffersonlam
329
15k
nonsquared
81
3.4k
hatefulcrawdad
257
17k
chriscoyier
780
240k
zenorocha
296
40k
bryan
100
11k
aarron
257
36k
lauravandoore
11
1.5k
Transcript
Christoph Lühr @chluehr / bePHPug 2017-03-07 LXD System Containers
None
None
Unicode Character 'HAPPY PERSON RAISING ONE HAND' (U+1F64B)
Hosting?
Testing?
Live Testing?
OS Updates?
Deployments?
Load Balancing?
None
None
SIN CE 2000
Image source: http://www.flickr.com/photos/robby_van_moor/5702589201/ CC BY-ND 2.0
None
(#) Internet
None
(d|t) Digital Transformation
https://en.wikipedia.org/wiki/File:Pimcore-logo-2016.svg
https://en.wikipedia.org/wiki/File:Pimcore-logo-2016.svg
System Container?
System? Container
Photo: drosen7900 http://www.flickr.com/photos/59691268@N00/26337022226 "The Internet Archive" Via: Photopin License: CC
BY-NC-ND-2.0 https://creativecommons.org/licenses/by-nc-nd/2.0/ SERVER!
MACHINE CPU, RAM, BIOS/IO ("physical hardware")
LINUX / OS Kernel + Userspace (Init, Shells, Tools, Libs)
APPLICATION PHP, Mysql, Redis, ... (Daemons, Services & Code)
APPLICATION OS KERNEL MACHINE Server Machine "Bare Metal"
Virtualization
VirtualBox XEN LXD Docker
APPLICATION OS KERNEL MACHINE H VirtualBox "Hardware Virtualization"
XEN "Paravirtualization" APPLICATION OS KERNEL MACHINE
APPLICATION OS KERNEL MACHINE LXD "System Container"
APP APP APP LIB LIB LIB KERNEL MACHINE Docker "Application
Container"
LXD
http://design.ubuntu.com/brand/canonical-logo
Features • Images • Instant Snapshots • Remotes, Transfer •
Space efficient • Disc- / Ram- / CPU Efficiency!
LXC CLI LXD Daemon LXC / Net.-Bridge ZFS LXD Components
/ Architecture
C:\>_ LXD Operations LXC local Commands
Create Container lxc launch ubuntu:16.04 my-container
List Containers lxc list
Start Container lxc start my-container
Stop Container lxc stop my-container
Execute (in) Container lxc exec my-container my-cmd
Copy Container lxc copy my-container new-con
Rename Container lxc move my-container mynewname
Destroy Container lxc delete my-container
Snapshots Points in Time Icon made by Madebyoliver from www.flaticon.com
is licensed by CC 3.0 BY
Create Snapshot lxc snapshot my-container or lxc snapshot my-container my-snap
Delete Snapshot lxc delete my-container/snapshot
Restore Snapshot lxc restore my-container snapshot
Create from Snapshot lxc copy my-container/my-snap \ new-container
Space Requirements Icon made by Freepik from www.flaticon.com is licensed
by CC 3.0 BY
Icon made by Freepik from www.flaticon.com is licensed by CC
3.0 BY 1 LXD Container = 1 GB
= ? GB Icon made by Freepik from www.flaticon.com is
licensed by CC 3.0 BY
= ~1 GB! Icon made by Freepik from www.flaticon.com is
licensed by CC 3.0 BY
ZFS Copy - on - Write
ZFS Copy - on - Write
Remotes Image source: http://www.iconarchive.com/show/ios7-icons-by-icons8/Network-Remote-Control-icon.html
Start remote Container lxc start my-remote:my-container
All CLI remotely! lxc xxxxx my-remote:my-container
Copy to Remote lxc copy my-container/my-snap \ my-remote:
Recap: Container Spec. remote:my-container/my-snap
Demo https://linuxcontainers.org/lxd/try-it/
HOSTING
HTTP Proxies Exposing Containers
Nginx Proxy HTTP Requests LXD Host LXD Container NGINX HTTP
Proxy Apache / PHP
server { listen 80; server_name www.website.de; location / { proxy_pass
http://10.1.1.264:80; client_max_body_size 100M; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; } }
NginX Proxy HTTP Requests LXD Host LXD Container A NGINX
HTTP Proxy Apache / PHP LXD Container B Apache / PHP
Deployment Strategy blue-green
Deployment Strategy blue-green LXD Host LXD Container A NGINX HTTP
Proxy Apache / PHP
Deployment Strategy blue-green LXD Host LXD Container A NGINX HTTP
Proxy Apache / PHP Snapshot copy of A
Deployment Strategy blue-green LXD Host LXD Container A NGINX HTTP
Proxy Apache / PHP LXD Container B Apache / PHP Testing
server { listen 80; server_name www.website.de; set $host_blue 10.31.1.199; set
$host_green 10.31.1.4; set $upstream $host_green; # default! if ($http_x_debug = "green") { set $upstream $host_green; } if ($http_x_debug = "blue") { set $upstream $host_blue; } location / { proxy_pass http://$upstream:80; } }
Deployment Strategy blue-green LXD Host LXD Container B NGINX HTTP
Proxy Apache / PHP LXD Container A Destroyed
Deployment Strategy blue-green LXD Host LXD Container B NGINX HTTP
Proxy Apache / PHP
Image source: http://www.flickr.com/photos/rietje/76566707/ CC BY 2.0
Features • VPCs: Networking / Bridges / ... • cgroups
(...): Limiting Ressources • Live (State) Migration (experimental) • Nesting: Docker within LXD Containers • Setup: Modern Kernel Features required • OpenStack: Nodes
LXD System Containers: Lean & Fast, support Snapshots & Remotes
& Transfers
Thanks! Questions? Christoph Lühr luehr@r-pentomino.de christoph.luehr@basilicom.de @chluehr Slides license Attribution-NonCommercial-ShareAlike
3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/
Links & References • LXD https://linuxcontainers.org/lxd/