whoami
Stefan	Scherer	
Sr.	So0ware	Engineer	
SEAL	Systems	
Blog	at	stefanscherer.github.io	
@stefscherer
Build	and	ship	Docker	images	
Windows	Containers	
Build	software	with	GitHub	and	Cloud	CI	servers	
Create	a	multi-arch	Docker	image	
Using	a	mixed	Docker	Swarm
Agenda
A	software	company
Developers	write	great	apps…
Your	customers
♥
Developers	write	great	apps…
Your	customers	vary
♥
♥
Developers	write	great	apps…
Love	cross-platform
Java,	Node.js,	.NET	Core,	…
♥
♥
The	shipping	problem
Java,	Node.js,	.NET	Core,	…
♥
♥
How	to	…

…	run	your	app	as	a	service?	
…	package	your	app?	
…	install	all	dependencies?	
…	deal	with	customers	machines?	
…	update?	
…	rollback?	
The	shipping	problem
Java,	Node.js,	.NET	Core,	…
♥ ♥
What	is	a	container?
What	is	a	container?
Standardized	packaging	for	
so0ware	and	dependencies	
	Isolate	apps	from	each	other	
	Share	the	same	OS	kernel	
	Works	for	all	major	Linux

distribuSons
Containers	on	all	major	platforms
Container Image
Analogous to a VHD and config file to a virtual machine
Created by running a container and capturing changes
Changes include files and registry
Image
Metadata

Name,
Creation Data,
Command To Execute,
Dependences
Contents
Files FoldersRegistry
Container Images
IIS
My Website
Base Image (OS)
Application
Framework
Application
Container Images
IIS
My Website
Base Image (OS)
Application
Framework
Application
Image Contents
Folders and Files
License.txt PerfLogs Program Files
Program Files (x86)Users Windows
Registry
HKLM HKCU
HKCR HKU
Container Images
IIS
My Website
Base Image (OS)
Application
Framework
Application
Image Contents
Folders and Files
License.txt PerfLogs Program Files
Program Files (x86)Users Windows
Registry
HKLM HKCU
HKCR HKU
Image Contents
Folders and Files
mysite.html
Registry
inetpub
SOFTWARE
/mykey
HKLM
docker	container	run
Hub
nginx microsoft/iis
docker	container	run	-	different	OS
Hub
nginx microsoft/iis
⚡ ⚡
Manifest	lists
Manifest	list
Hub
me/myapp
Manifest	list:	docker	container	run
Hub
me/myapp me/myappme/myapp
docker	run	microsoft/dotnet	dotnet	--version
How	to	build	container	images?
docker	image	build	/	docker	image	push
Hub
me/myapp:linux me/myapp:windows
How	to	build	the	manifest	list?
docker	manifest	create
Hub
me/myapp
docker	manifest	push
Hub
me/myapp
How	to	build	a	CI	pipeline	for	that?
Docker	CI	Pipeline	for	Linux	and	Windows
docker	image	push
git	push
docker	image	push
Container

Registry
Run	Unit	Tests	
Build	App	
docker	image	build
docker	manifest	push
Hub
Docker	CI	Pipeline	for	Linux	and	Windows
docker	image	push
git	push
docker	image	push
Run	Unit	Tests	
Build	App	
docker	image	build
docker	manifest	push
Demo

	 building	a	multi-arch	container	image
docker	image	build	
docker	image	push	
docker	image	build	
docker	image	push	
docker	manifest	create	
docker	manifest	push	
Recap
me/myapp
me/myapp:linux
me/myapp:windows
docker	manifest	command	
				Pull	request	https://github.com/docker/cli/pull/138	
				Docker	17.09	?	
manifest-tool	from	Phil	Estes	
				Binaries	at	https://github.com/estesp/manifest-tool/releases	
Availability
T H A N K Y O U !
Q U E S T I O N S ?
S T E FA N S C H E R E R
@ s t e f s c h e re r
10% off with
promo code
„CaptainStefan“
@stefscherer

Azure Saturday - Build and Deploy multi-arch Docker Images