Docker is the fastest growing technology! Attendees
will be introduced to Docker containers and learn how to setup complex scaled xDB and Solr setups in
seconds. Docker is becoming more and more popular – Microsoft has already integrated containers into
Windows servers, and the release of a Windows OS kernel supporting containers is not far away. Join this session to learn how Docker can help in Sitecore development and system administration.
3. LASUG ONLINE #1 @vasiliyfomichev3
WHAT ARE WE LOOKING AT?
Today’s development model
What are “containers”
How can docker help in the sitecore world?
Demos
Ubuntu on Docker
Solr on Docker
Mongo on Docker
Docker Machine
Provision Digital Ocean Droplet
Provision AzureVM
Where is this headed?
5. LASUG ONLINE #1 @vasiliyfomichev
DEVOPS CHALLENGES
• Local environment setups are getting more complex
• Environment differences allow for bugs in
applications
• Manual setup it too complex and time consuming
• Human error
• Scalability issues on prem
• Inability to reproduce production environment locally
for debugging
• Inability to easily sync all Sitecore environments
• Lack of QA and other types of reproducibility
8. LASUG ONLINE #1 @vasiliyfomichev
Shipping Containers Invented
https://en.wikipedia.org/wiki/Malcom_McLean
In 1956, most cargo was loaded and
unloaded by hand. Hand-loading a ship cost
$5.86 a ton.
Malcom McLean born in 1913 developed the
modern intermodal shipping container,
which revolutionized transport and
international trade.
McLean knew "A ship earns money only
when she's at sea," and based his business
on that efficiency.
Using containers, it cost only 16 cents a ton,
a 39-fold savings. Containerization also
greatly reduced the time to load and unload
ships, improving reliability.
12. LASUG ONLINE #1 @vasiliyfomichev
Docker is growing (18,000% growth)
13. LASUG ONLINE #1 @vasiliyfomichev
Enterprises Rapidly Adopting Docker
Small, 30%
Midsize, 15%
Large, 56%
Company Sizes Using Docker
14. LASUG ONLINE #1 @vasiliyfomichev
Container !=VM
• VM’s
• Full instances of the entire OS
• Not easily multi-instanced ~SysPrep
• Containers
• Layered elements of the OS + Components
• Easily Duplicated, Start/Stop
• Lightweight OS (Tiny Core Linux &Windows Server Core)
15. LASUG ONLINE #1 @vasiliyfomichev
How tiny is tiny?
• ~24MB download!Whaaaat?!
• Runs completely from RAM
• Minimal Requirements:
• 46MB of RAM
• i486DX CPU (introduced in 1989, 50MHz, 8KB cache)
• Recommended Requirements:
• 128MB+ of RAM
• Pentium 2 CPU
SUGCON NORTH AMERICA 15
16. LASUG ONLINE #1 @vasiliyfomichev
Server Core Requirements
• Minimum Requirement:
• 256-512MB of RAM
• 1GHz (x86) or 1.4Ghz (x64)CPU
• Recommended
• 512MB+
• 2GHz+CPU
SUGCON NORTH AMERICA 16
17. LASUG ONLINE #1 @vasiliyfomichev
Container Comparison
• Immutable infrastructure!
• Fast startup (lightning fast!)
• Portable & light-weight
• A unit of deployment
• Ease of creation
• Each container can become a portion of the entire
app
• May have multiple containers that make up one or more
than one app
18. LASUG ONLINE #1 @vasiliyfomichev
Why Containers?
Developers
Enable ‘write-once, run-anywhere’ apps
Enables microservice architectures
Great for dev/test of apps and services
(thousands available from Docker)
Reproducibility
Operations
Portability, Portability, Portability
Standardized development, QA, and prod
environments
Abstract differences in OS distributions and
underlying infrastructure
Easily scale-up and scale-down in response to
changing business needs
DevOps
19. LASUG ONLINE #1 @vasiliyfomichev
Hosting Containers
Locally with:
• Docker Toolbox (Linux)
• Hyper V (Windows)
Physical Servers
• Linux (Linux)
• Windows 2016 TP3
(Windows)
Clouds
• Azure (Linux & Windows)
• Digital Ocean (Linux)
• AWS (Linux)
• Google (Linux)
• Rackspace (Linux)
• …etc.
AzureOn Premises Service ProviderLocally
22. LASUG ONLINE #1 @vasiliyfomichev
Windows Server Containers
Creation, deployment, and management
Developers
Containers pushed to
central repository
Operations automates
deployment and
monitors deployed apps
from central repository
Operations collaborates with developers
to provide app metrics and insights
Developers update, iterate,
and deploy updated
containers
23. LASUG ONLINE #1 @vasiliyfomichev
Infrastructure
Cloud On Premises Service Provider
Container Technologies
Container Management
PowerShell OthersDocker
Development
Environment
s
Others…
24. LASUG ONLINE #1 @vasiliyfomichevSUGCON NORTH AMERICA 24
SITECORE AND CONTAINERS
25. LASUG ONLINE #1 @vasiliyfomichev
Mongo on docker
• Simple configuration
– Single instance
– Replica set (development)
• Scaled configuration
– Scale horizontally
– Sharding
– Replica sets
30. LASUG ONLINE #1 @vasiliyfomichev
1. Docker client versus host
• Docker client is a command line interface (CLI) Docker
• Docker host is a Linux/Windows VM running Docker daemon
2. Docker Linux and Windows hosts
• You can only create the same container as the underlying host VM - Linux host = Linux containers
3. Docker Image vs Docker Container
• Image = The definition – literally a single file [My Website]
• Container – An instance of an image [3 instances of My Website]
4. Cloud Registry Service and Public Image Repos
• Unlimited public repos, one free private or buy private repos
• 50,000+ images - Wordpress, Nginx, Redis, MySQL, Logstash, and your images!
• Docker Trusted Registry – Dedicated registry application deployable on-premise or direct from Azure
Marketplace
5 common Docker questions
31. LASUG ONLINE #1 @vasiliyfomichev
5 common Docker questions
5. Deployments replace instead of update
“Immutable infrastructure”
Website
Update your app using
Web Deploy or CI/CD
Docker
Replace running
containers using CI,
Don’t update the old
container
33. LASUG ONLINE #1 @vasiliyfomichev
Some Other Docker Concepts
Compose
Define and deploy a multi-container
application
Swarm
Pool of hosts treated as a single unit, control
over multi-container environments
Docker Machine
Create and manage Docker instances locally
and on the cloud.
35. LASUG ONLINE #1 @vasiliyfomichev
Docker Swarm
• Adds a collection of virtual machines into one logical
cluster.
• Same Docker API
• Elect a leader to receive commands and send to cluster
• Scheduler
• Constraints – set a label on a VM/Node so matching containers use that VM
(ex: region=us-west)
• Affinities – Filters for labels, image, containers
• ex: -e affinity:container==frontend)
• Various Strategies
36. LASUG ONLINE #1 @vasiliyfomichev
Wrapping Up
• Containers Ease Development & Ops
• Force a conversation of scalable design
• Ease of movement (On Prem, AWS, Azure)
• Immutable Infrastructure
• Use Docker Hub repositories for base images
• Run Solr and Mongo in containers
• Run Sitecore in containers (coming soon) Really soon!
37. LASUG ONLINE #1 @vasiliyfomichev
Thank you!
https://www.linkedin.com/in/vasiliyfomichev
@vasiliyfomichev
VASILIY FOMICHEV
http://www.cmsbestpractices.com
Special thanks to Steve Lasker, Microsoft
And don’t just take our word for it. This is a resulting chart from a regular survey done by ETR, an independent research firm. In roughly the 10 year history that they have been doing this, they have never seen the kind of adoption jump like they have for Docker. This is also based on responses from over 3,000 CIO’s from some of the largest and well known names in industry. Most noteably that the adoption intent went from nothing to over 40% literally overnight.