SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Docker Overview
Macys.com ClubCode Friday March 6, 2015
Hardware Virtualization
Virtualizing the Physical Hardware
ļ‚§ VMware vSphere Hypervisor
ļ‚§ Xen
ļ‚§ KVM
ļ‚§ VirtualBox
OS Virtualization
Virtualizing the Operating System
ļ‚§ Containers have existed on *nix systems for some time
ļ‚§ An extension of the 'chrootā€˜ concept
ļ‚§ Examples:
ļ‚§ Linux Containers
ļ‚§ BSD ā€œJailsā€
ļ‚§ Solaris Containers
ā€œUnderstanding Dockerā€: https://docs.docker.com/introduction/understanding-docker/
Container Implementations
From Wikipedia: Operating-system-level Virtualization
What is Docker?
ā€¢ Docker helps to create and manage containers easy
ā€¢ Docker creates an ecosystem similar to Github and Maven that makes
it easy to share images
ā€¢ An image is a shareable snapshot of software
ā€¢ A container is a running instance of an image
ā€¢ Images can be built and managed on your local workstation
ā€¢ Images can be pulled and pushed from private and public repos
What is Docker? https://www.docker.com/whatisdocker/
Currently Linux-Centric
ā€¢ Linux already has container support
ā€¢ Container support is already in Linux
ā€¢ Uses Linux namespaces and control groups (cgroups)
ā€¢ So, what does Docker bring to the table?
ā€¢ makes it easy to build images
ā€¢ creates images that are portable
ā€¢ provides an ecosystem to help users share their images
ā€¢ Shared Registry
ā€¢ is open-source
ā€¢ has a very active community
ā€¢ provides security
What About Mac OS?
ā€¢ Can run Docker under Mac OS!
ā€¢ Until native OS support is built ā€“ Use 'boot2docker'
ā€¢ Full instructions: https://docs.docker.com/installation/mac/
Docker daemon is
native under Linux
boot2docker runs a
lightweight VM that hosts
the Docker daemon
What About Windows?
ā€¢ Can run Docker under Windows
ā€¢ Until native OS support is built ā€“ Use 'boot2docker'
Uses the standard Windows
installer
Startup screen looks like this:
See instructions at: https://docs.docker.com/installation/windows
Docker Ecosystem
ā€¢ Docker provides a centralized repository of Images
ā€¢ http://registry.hub.docker.com
ā€¢ 3rd Party private repos are available too
ā€¢ Or set up your own on-prem repos
ā€¢ Similar to Github & Maven
Diagrams from ā€œDocker in Actionā€, Manning Publications
Demo
Demo: Install Docker
https://docs.docker.com/installation/ubuntulinux/
Use the ā€œDocker-maintained Package Installationā€ section
For the latest version of Docker
Check for HTTPS transport for apt:
sudo apt-get update
sudo apt-get install apt-transport-https
Create a new apt sources file ā€“ docker.list
sudo vi /etc/apt/sources.d/docker.list
and add the following line:
deb https://get.docker.com/ubuntu docker main
Finish the incantation with an update and an install:
sudo apt-get update
sudo apt-get install lxc-docker
And youā€™re done!
For other distros: https://docs.docker.com/installation/
Demo: Find Images
For a web interface:
https://registry.hub.docker.com/
Or you can search for images using the CLI:
sudo docker search busybox
ā€¢ Stars indicate the popularity of the image
ā€¢ Official [OK] indicate if the image is built/maintained by Docker.com
peterc@L4377743:~$ sudo docker search busybox
[sudo] password for peterc:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 135 [OK]
progrium/busybox 36 [OK]
jeanblanchard/busybox-java Minimal Docker image with Java 21 [OK]
jeanblanchard/busybox-tomcat Minimal Docker image with Apache Tomcat 10 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made... 4 [OK]
sequenceiq/busybox 1 [OK]
peelsky/zulu-openjdk-busybox 1 [OK]
skomma/busybox-data Docker image suitable for data volume cont... 1 [OK]
alars/busybox-go-webapp 0 [OK]
ā€¦
justicefries/busybox-ssl Busybox, with SSL support 0 [OK]
ā€¦
shingonoide/archlinux-busybox Arch Linux, a lightweight and flexible Lin... 0 [OK]
openshift/busybox-http 0 [OK]
ggtools/busybox-ubuntu Busybox ubuntu version with extra goodies 0 [OK]
akolosov/busybox 0 [OK]
socketplane/busybox 0 [OK]
powellquiring/busybox 0 [OK]
openshift/busybox-http-app 0 [OK]
peterc@L4377743:~$
Demo: Trusted Images
ā€œOfficialā€ Docker images
https://registry.hub.docker.com/search?q=library&searchfield=
or via CLI:
peterc@L4377743:~$ sudo docker search library
NAME DESCRIPTION STARS OFFICIAL
AUTOMATED
ubuntu Official Ubuntu base image 1404 [OK]
centos The official build of CentOS. 865 [OK]
nginx Official build of Nginx. 646 [OK]
node Node.js is a JavaScript-based platform for... 559 [OK]
postgres The PostgreSQL object-relational database ... 554 [OK]
redis Redis is an open source key-value store th... 547 [OK]
mysql MySQL is a widely used, open-source relati... 507 [OK]
mongo MongoDB document databases provide high av... 478 [OK]
debian (Semi) Official Debian base image. 368 [OK]
jenkins Official Jenkins Docker image 284 [OK]
wordpress The WordPress rich content management syst... 234 [OK]
registry Containerized docker registry 204 [OK]
golang Go (golang) is a general purpose, higher-l... 166 [OK]
rails Rails is an open-source web application fr... 144 [OK]
fedora Official Fedora 21 base image and semi-off... 144 [OK]
busybox Busybox base image. 142 [OK]
python Python is an interpreted, interactive, obj... 138 [OK]
java Java is a concurrent, class-based, and obj... 137 [OK]
php While designed for web development, the PH... 136 [OK]
ruby Ruby is a dynamic, reflective, object-orie... 133 [OK]
tomcat Apache Tomcat is an open source implementa... 77 [OK]
perl Perl is a high-level, general-purpose, int... 29 [OK]
ubuntu-upstart Upstart is an event-based replacement for ... 21 [OK]
peterc@L4377743:~$
Demo: Running an Image
First time you ā€˜runā€™ an image, you download the image
The image, once running, is called a ā€˜containerā€™
peterc@L4377743:~$ sudo docker run -ti busybox:latest
/ # ls -alp /
total 56
drwxr-xr-x 24 root root 4096 Feb 27 19:32 ./
drwxr-xr-x 24 root root 4096 Feb 27 19:32 ../
-rwxr-xr-x 1 root root 0 Feb 27 19:32 .dockerenv
-rwxr-xr-x 1 root root 0 Feb 27 19:32 .dockerinit
drwxrwxr-x 2 root root 4096 May 22 2014 bin/
drwxr-xr-x 5 root root 380 Feb 27 19:32 dev/
drwxr-xr-x 6 root root 4096 Feb 27 19:32 etc/
drwxrwxr-x 4 root root 4096 May 22 2014 home/
drwxrwxr-x 2 root root 4096 May 22 2014 lib/
lrwxrwxrwx 1 root root 3 May 22 2014 lib64 -> lib/
lrwxrwxrwx 1 root root 11 May 22 2014 linuxrc -> bin/busybox
drwxrwxr-x 2 root root 4096 Feb 27 2014 media/
drwxrwxr-x 2 root root 4096 Feb 27 2014 mnt/
drwxrwxr-x 2 root root 4096 Feb 27 2014 opt/
dr-xr-xr-x 321 root root 0 Feb 27 19:32 proc/
drwx------ 2 root root 4096 Feb 27 19:32 root/
lrwxrwxrwx 1 root root 3 Feb 27 2014 run -> tmp/
drwxr-xr-x 2 root root 4096 May 22 2014 sbin/
dr-xr-xr-x 13 root root 0 Feb 27 19:32 sys/
drwxrwxrwt 3 root root 4096 May 22 2014 tmp/
drwxrwxr-x 6 root root 4096 May 22 2014 usr/
drwxrwxr-x 4 root root 4096 May 22 2014 var/
/ # exit
peterc@L4377743:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
3bc3868dd6aa busybox:latest "/bin/sh" 15 minutes ago Exited (0) 8 seconds ago
cocky_wilson
peterc@L4377743:~$
Demo: Help
At this point, youā€™re wondering: ā€œHow do I remember all this?ā€
peterc@L4377743:~$ docker help
ā€¦
ā€¦
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive
login Register or log in to a Docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from a Docker registry server
push Push an image or a repository to a Docker registry server
rename Rename an existing container
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
ā€¦
Demo: Help
And you can get extensive help on each command:
peterc@L4377743:~$ docker help run
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
-a, --attach=[] Attach to STDIN, STDOUT or STDERR.
--add-host=[] Add a custom host-to-IP mapping (host:ip)
-c, --cpu-shares=0 CPU shares (relative weight)
--cap-add=[] Add Linux capabilities
--cap-drop=[] Drop Linux capabilities
--cidfile="" Write the container ID to the file
--cpuset="" CPUs in which to allow execution (0-3, 0,1)
-d, --detach=false Detached mode: run the container in the background and print the new container ID
--device=[] Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm)
--dns=[] Set custom DNS servers
--dns-search=[] Set custom DNS search domains (Use --dns-search=. if you don't wish to set the search
domain)
-e, --env=[] Set environment variables
--entrypoint="" Overwrite the default ENTRYPOINT of the image
--env-file=[] Read in a line delimited file of environment variables
--expose=[] Expose a port or a range of ports (e.g. --expose=3300-3310) from the container without
publishing it to your host
-h, --hostname="" Container host name
ā€¦
All the command details are available in the Docker website docs:
https://docs.docker.com/reference/commandline/cli/
Demo: node.js + redis app
Letā€™s spin up a node.js & redis app:
ā€¢ Arbitrarily picked nodejs-todo app off github for this demo
ā€¢ It uses these modules: ejs, express, underscore, and of course, redis
1. Start a redis instance
peterc@L4377743:~$ sudo docker run ā€“d --name redis redis:latest
fb173fb5194afa5fbeaa24d2acf1b6f9dd8e72cfefa6088ff3b3e4e9b3059c66
peterc@L4377743:~$
2. Check for the running container
peterc@L4377743:~$ sudo docker ps -a
[sudo] password for peterc:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
fb173fb5194a redis:latest "redis-server /etc/r About an hour ago Up About an hour
6379/tcp redis
3bc3868dd6aa busybox:latest "/bin/sh" 4 hours ago Exited (0) 4 hours ago
cocky_wilson
peterc@L4377743:~$
We did not specify a port on the ā€˜runā€™ command
Default port for redis is 6379
All networking access is explicit; it has to be specified on ā€˜runā€™ if itā€™s required
Try ā€˜netstatā€™ or ā€˜telnetā€™ā€¦ No 6379 port listening.
Run in detached mode
Give it a name so itā€™s easy to link
No port specified. Never needs to
communicate outside containers
Demo: node.js + redis app
The redis container is now up and running
Letā€™s get a sample node.js app to run and use the redis database
3. Get nodejs-todo
peterc@L4377743:~/tmp$ git clone https://github.com/amirrajan/nodejs-todo.git
Cloning into 'nodejs-todo'...
remote: Counting objects: 32, done.
remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 32
Unpacking objects: 100% (32/32), done.
Checking connectivity... done.
peterc@L4377743:~/tmp$
4. Examine source. Make a one-line modification
peterc@L4377743:~/tmp/nodejs-todo$ vi server.js
peterc@L4377743:~/tmp/nodejs-todo$ git diff server.js
diff --git a/server.js b/server.js
index 20263cd..59323fe 100644
--- a/server.js
+++ b/server.js
@@ -11,7 +11,7 @@ var client = null;
if(process.env.REDISTOGO_URL) { //heroku
client = require('redis-url').connect(process.env.REDISTOGO_URL);
} else if(config.env == "development") {
- client = redis.createClient();
+ client = redis.createClient(secret.redisPort, secret.redisMachine);
} else { //nodejitsu
client = redis.createClient(secret.redisPort, secret.redisMachine);
client.auth(secret.redisAuth, function (err) {
peterc@L4377743:~/tmp/nodejs-todo$
Demo: node.js + redis app
There are a couple of code changes needed so that the app runs under Docker
First, the nodejs-todo needs one dependency updateā€¦
5. Modify package.json
(Lock in express version 3.0.1, since newer versions require code changes)
peterc@L4377743:~/tmp/nodejs-todo$ git diff package.json
diff --git a/package.json b/package.json
index 39bd9de..052ecff 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
"url": "git://github.com/amirrajan/nodejs-todo.git"
},
"dependencies": {
- "express": "~3.0.1",
+ "express": "3.0.1",
"ejs": "~0.8.3",
"jasmine-node": "~1.0.26",
"underscore": "~1.4.2",
peterc@L4377743:~/tmp/nodejs-todo$
Demo: node.js + redis app
When we start the node container, it will need to connect with redis
ā€¢ There are many ways to do this
ā€¢ Letā€™s use the Docker CLI to get the redis IP address
6. Get redis containerā€™s IP address
peterc@L4377743:~/tmp/nodejs-todo$ export DOCKER_IP=`sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' 
> fb173fb5194a`
peterc@L4377743:~/tmp/nodejs-todo$ echo $DOCKER_IP
172.17.0.2
peterc@L4377743:~/tmp/nodejs-todo$
7. Set up nodejs-todoā€™s configuration file
peterc@L4377743:~/tmp/nodejs-todo$ sed -e "s/"redisMachine": "",/"redisMachine": "$DOCKER_IP",/" 
> lib/secret.js.example > lib/secret.js
peterc@L4377743:~/tmp/nodejs-todo$ cat lib/secret.js
module.exports = {
"redisPort": 6379,
"redisMachine": "172.17.0.2",
"redisAuth": "",
};
peterc@L4377743:~/tmp/nodejs-todo$
Now the nodejs-todo app is ready to go
(Note that all of this is easily scriptable.)
Demo: node.js + redis app
Now letā€™s fire up the node.js container
Weā€™ll bring it up as a terminal session, so you can see its internals
That will also allow us to install the ā€˜requiredā€™ modules
Since the generic node.js container doesnā€™t know anything about the nodejs-todo app
Weā€™ll inject that app into the container when we start it
8. Start node.js container
peterc@L4377743:~/tmp/nodejs-todo$ sudo docker run -ti -p 3000:3000 -v ~/tmp/nodejs-todo:/opt/nodejs-todo 
> --link redis:redis library/nodejs:0.10.36 /bin/bash
bash: -e: command not found
[ root@4b47ff312f4a:/data ]$ cd /opt/nodejs-todo
[ root@4b47ff312f4a:/opt/nodejs-todo {master *} ]$ cat lib/secret.js
module.exports = {
"redisPort": 6379,
"redisMachine": "172.17.0.2",
"redisAuth": "",
};
The --link option links this node container to the already running redis container.
Does the secret.js file look familiar?
Weā€™re now accessing it inside the container.
Expose port 3000 (as 3000)
Place node app under /opt folder
Interactive terminal session
Demo: node.js + redis app
Starting the node.js container, continuedā€¦
ā€¢ The node.js container is now running
ā€¢ But before we start the node server, nodejs-todo requires 4 modules
9. Installing the appā€™s node dependencies in the container
root@595627a55592:/# cd /opt/nodejs-todo/
root@595627a55592:/opt/nodejs-todo# npm install
underscore@1.4.4 node_modules/underscore
ejs@0.8.8 node_modules/ejs
redis@0.8.6 node_modules/redis
jasmine-node@1.0.28 node_modules/jasmine-node
ā”œā”€ā”€ walkdir@0.0.7
ā”œā”€ā”€ coffee-script@1.9.1
ā”œā”€ā”€ requirejs@2.1.16
ā””ā”€ā”€ jasmine-reporters@2.0.5 (mkdirp@0.3.5)
express@3.0.1 node_modules/express
ā”œā”€ā”€ methods@0.0.1
ā”œā”€ā”€ fresh@0.1.0
ā”œā”€ā”€ cookie-signature@0.0.1
ā”œā”€ā”€ range-parser@0.0.4
ā”œā”€ā”€ cookie@0.0.4
ā”œā”€ā”€ crc@0.2.0
ā”œā”€ā”€ commander@0.6.1
ā”œā”€ā”€ mkdirp@0.3.3
ā”œā”€ā”€ debug@2.1.2 (ms@0.7.0)
ā”œā”€ā”€ send@0.1.0 (mime@1.2.6)
ā””ā”€ā”€ connect@2.6.2 (pause@0.0.1, bytes@0.1.0, formidable@1.0.11, qs@0.5.1)
root@595627a55592:/opt/nodejs-todo#
10. Start the server
[ root@4b47ff312f4a:/opt/nodejs-todo {master *} ]$ node server.js
Demo: node.js + redis app
The node.js container is now running the nodejs-todo app
We can now run the app in a browser
10. Start browser on localhost:3000
Play around. Stop the node container. Restart it. The redis data is still there!
New Docker Features
in Development
Docker Swarm
Run many containers as a cluster
ļ‚§ Turns pool of Docker hosts into a single,
virtual host
ļ‚§ Swarm uses the existing Docker API
ļ‚§ Pluggable backends
ļ‚§ Allows swapping with more powerful backends
ļ‚§ For example: Mesos
ļ‚§ TLS support for all server communications
ļ‚§ CLI to Swarm
ļ‚§ Swarm to Docker nodes
https://github.com/docker/swarm/
Docker Machine
Makes Docker host creation much easier
ļ‚§ Works on:
ļ‚§ Local laptop
ļ‚§ On cloud providers
ļ‚§ In customer datacenters
ļ‚§ Single command:
ļ‚§ Creates servers
ļ‚§ Installs Docker on them
ļ‚§ Configures Docker client to communicate with them
ļ‚§ In beta
https://github.com/docker/machine
Docker Collaborations
These are just some of the integrations:
ā€¢ Google Compute Engine & Kubernetes
ā€¢ IBM Containers
ā€¢ Fedora Container & Docker Support
ā€¢ Openstack & Docker
ā€¢ Rackspace & Docker
ā€¢ Red Hat (Project Atomic)
ā€¢ VMware & Pivotal
ā€¢ Microsoft Azure
Other Vendors
In the Container Space
Container Vendors 1
Vagrant Linux, Mac
& Windows
Manages virtual dev environments by
wrapping virtualization & configuration.
LXD
Ubuntu
Linux Provides a container-based hypervisor for
creating and managing container clusters.
Project Atomic
Red Hat
Linux A direct competitor to Docker, focusing
initially on the Red Hat distros. Additionally
supporting large-scale cluster support.
EC2 Container Service
Amazon
Linux Docker container support in an AWS EC2
context.
Flockport
Startup
Linux Very small, recent startup in direct
competitiion with Docker.
Container Vendors 2
Kubernetes
Google
Linux Provides large-scale cluster management
for Docker Containers.
Shipyard
Startup
Linux Provides a management console for
Docker Containers.
Tutum
Startup
Linux Provides cloud-based support for setup
and management of dev environments to
many different cloud providers.
Rocket
CoreOS
CoreOS Provides container support for CoreOS
which is a fork of ChromeOS. VERY
immature product.
Spoon
Xenocode
Windows Provides container-like support for
Windows. Meanwhile, Microsoft may build
in LXC-type support into Windows...
Docker Swarm Linux Provides large-scale cluster management
for Docker Containers. In beta.
Vagrant
ā€¢What is it?
Vagrant is computer software for creating and configuring virtual development
environments. It can be seen as a wrapper around virtualization software such as VirtualBox,
KVM, VMware and around configuration management software such as Ansible, Chef, Salt
or Puppet.
Wikipedia.org
ā€¢Since?
ā€¢2012. Current Release: 1.6.5 (9/4/2014)
ā€¢Open Source?
ā€¢Yes. MIT License
ā€¢On Github: https://github.com/mitchellh/vagrant
ā€¢Runs on?
ā€¢Windows, MacOS & Linux
ā€¢Cloud & Virtualization Ready?
ā€¢VirtualBox, VMware, AWS, OpenStack.
ā€¢Compatible with Docker.
ā€¢Requirements?
ā€¢Ruby 2.0 and LXC or libvert
ā€¢Resources?
ā€¢Website: https://www.vagrantup.com
ā€¢Repository: https://atlas.hashicorp.com/boxes/search
LXD: ā€œThe Linux Container Daemonā€
ā€¢What is it?
LXD, pronounced Lex-Dee, is a container-based hypervisor sponsored by Canonical, the
company that supports Ubuntu Linux. It provides a way to manage containers, via a REST
API and a CLI.
Tycho Anderson (Canonical) at Linux.conf.au 2015 Auckland, New Zealand
ā€¢Since?
ā€¢Announced at Paris OpenStack Summit 2014 (November)
ā€¢0.1 release January 2015, container management only
ā€¢Open Source?
ā€¢Yes. Apache 2.0 License.
ā€¢On Github: https://github.com/lxc/lxd
ā€¢Runs?
ā€¢Linux distros under Ubuntu. No Windows. No Mac.
ā€¢Cloud & Virtualization Ready?
ā€¢OpenStack. Compatible with Docker.
ā€¢Requirements?
ā€¢Golang 3.0+ and LXC
ā€¢Resources?
ā€¢Website: http://www.ubuntu.com/cloud/tools/lxd
Project Atomic
ā€¢What is it?
Platform for rolling out Docker-based containizered apps. Supports atomic upgrades and
rollbacks. Web-based Cockpit provides storage, services and logging control, plus ability to
browse and inspect images and containers. Integrates with Kubernetes.
Project Atomic Website
ā€¢Since?
ā€¢Announced last year at Red Hat Summit
ā€¢Included in Fedora 21 (12/9/2014)
ā€¢Open Source?
ā€¢Yes. GPL 2 License.
ā€¢On Github: https://github.com/projectatomic/atomic-site/
ā€¢Runs?
ā€¢Fedora (now) and Centos & RHEL (later).
ā€¢Cloud & Virtualization Ready?
ā€¢Compatible with Docker.
ā€¢Requirements?
ā€¢Virtual Machine Manager (virt-manager) for Linux
ā€¢VirtualBox for Windows & Mac OS X
ā€¢Resources?
ā€¢Website: http://www.projectatomic.io/
Amazon EC2 Container Service
ā€¢What is it?
Amazon EC2 Container Service is a highly scalable, high performance container
management service that supports Docker containers and allows you to easily run
distributed applications on a managed cluster of Amazon EC2 instances.
Amazon EC2 Container Service website
ā€¢Since?
ā€¢Currently in Preview mode
ā€¢Open Source?
ā€¢No.
ā€¢Runs?
ā€¢EC2 Instances
ā€¢Cloud & Virtualization Ready?
ā€¢Compatible with Docker.
ā€¢Requirements?
ā€¢Amazon EC2 Instances
ā€¢Resources?
ā€¢Website: http://aws.amazon.com/ecs/
Flockport
ā€¢What is it?
Flockport provides web stacks and application in LXC containers that can be deployed on
any Linux server or VM in seconds. Looks like a direct competitor to Docker. Very small
company.
Flockport FAQs
ā€¢Since?
ā€¢Startup. September 9, 2014.
ā€¢Open Source?
ā€¢??? No information on their website or in any articles.
ā€¢Runs?
ā€¢Any Linux that supports LXC
ā€¢Cloud & Virtualization Ready?
ā€¢They ā€œ...will shortly enable users to deploy Flockport containers
directly to a number of public clouds directly from
Flockport.com...ā€
ā€¢Support for KVM for local work
ā€¢Requirements?
ā€¢Container Hub: http://www.flockport.com/containers/
ā€¢Resources?
ā€¢Website: http://www.flockport.com/
Kubernetes
ā€¢What is it?
Kubernetes is an open source container cluster manager. It schedules any number of container replicas
across a group of node instances. A master instance exposes the Kubernetes API, through which tasks are
defined. Kubernetes spawns containers on nodes to handle the defined tasks. The number and type of
containers can be dynamically modified according to need. An agent (a kubelet) on each node
instance monitors containers and restarts them if necessary. Kubernetes is optimized for Google Cloud
Platform, but can run on any physical or virtual machine..
Kubernetes project website
ā€¢Since?
ā€¢June 1, 2014.
ā€¢Open Source?
ā€¢Yes. Apache 2.0 License.
ā€¢Github repo:
https://github.com/googlecloudplatform/kubernetes
ā€¢Runs?
ā€¢Docker Images
ā€¢Cloud & Virtualization Ready?
ā€¢Yes.
ā€¢Requirements?
ā€¢Hosting: Google Cloud Platform, Digital Ocean
ā€¢Resources?
ā€¢Website: http://kubernetes.io/
Shipyard
ā€¢What is it?
Built on the Docker cluster management toolkit Citadel, Shipyard gives you the ability to
manage Docker resources including containers, hosts and more. Shipyard differs from other
management applications in that it promotes composability. Using "Extension Images" you
can add functionality such as application routing and load balancing, centralized logging,
deployment and more.
Shipyard Project website
ā€¢Since?
ā€¢June 2013
ā€¢Open Source?
ā€¢Yes. Apache 2.0 License.
ā€¢Github site: https://github.com/shipyard/shipyard
ā€¢Runs?
ā€¢Standard Docker Containers
ā€¢Cloud & Virtualization Ready?
ā€¢Uses Citadel for scheduling containers on a Docker cluster.
ā€¢Requirements?
ā€¢Golang 1.3+
ā€¢Resources?
ā€¢Website: http://shipyard-project.com/
Tutum
ā€¢What is it?
Web-hosted Docker container support. Build Docker compatible images and deploy the
containers to any cloud provider.
Tutum website
ā€¢Since?
ā€¢In beta.
ā€¢Open Source?
ā€¢No. Proprietary.
ā€¢Runs?
ā€¢Docker-compatible containers
ā€¢Cloud & Virtualization Ready?
ā€¢Yes.
ā€¢Requirements?
ā€¢Tutum Private Registry ā€“ requires account creation.
ā€¢Resources?
ā€¢Website: https://www.tutum.co
Rocket
ā€¢What is it?
Part of the CoreOS platform. CoreOS is a fork of ChromeOS. Partners with Pivotal. Direct
competitor with Docker but very immature product. Different philosophy from Docker: focus
on core container management, not on creating a full container platform.
CoreOS is building a container runtime, Rocket (12/1/2014)
ā€¢Since?
ā€¢Prototype version currently on Github
ā€¢Open Source?
ā€¢Yes. Apache 2.0 License.
ā€¢Github: https://github.com/coreos/rocket
ā€¢Runs?
ā€¢On CoreOS
ā€¢Cloud & Virtualization Ready?
ā€¢Direct competitor of Docker.
ā€¢Run CoreOS instances on Amazon AWS, Google or Rackspace
now.
ā€¢Requirements?
ā€¢Run Linux distros later...
ā€¢Resources?
ā€¢Website: https://github.com/coreos/rocket
Spoon
ā€¢What is it?
Container support in Windows. Uses Spoon VM instead of LXC. Hosts a component
repository.
What is Spoon?
ā€¢Since?
ā€¢Xenocode (2006-2010), then rebranded to Spoon in 2010.
ā€¢Open Source?
ā€¢No. Proprietary.
ā€¢Runs?
ā€¢Windows containers
ā€¢Cloud & Virtualization Ready?
ā€¢Docker and Spoon operate on different platforms (Linux vs.
Windows).
ā€¢Requirements?
ā€¢Windows
ā€¢Spoon.net Hub: https://spoon.net/hub
ā€¢Third-party Hub: http://turbo.net
ā€¢Resources?
ā€¢Website: https://spoon.net/

Weitere Ƥhnliche Inhalte

Was ist angesagt?

Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
Balaji Rajan
Ā 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9
JƩrƓme Petazzoni
Ā 

Was ist angesagt? (20)

Docker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSDocker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCS
Ā 
Devoxx France 2015 - The Docker Orchestration Ecosystem on Azure
Devoxx France 2015 - The Docker Orchestration Ecosystem on AzureDevoxx France 2015 - The Docker Orchestration Ecosystem on Azure
Devoxx France 2015 - The Docker Orchestration Ecosystem on Azure
Ā 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Ā 
Shipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerShipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with Docker
Ā 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
Ā 
Docker Understanding, What is Docker? Why Docker? How do I containerize somet...
Docker Understanding, What is Docker? Why Docker? How do I containerize somet...Docker Understanding, What is Docker? Why Docker? How do I containerize somet...
Docker Understanding, What is Docker? Why Docker? How do I containerize somet...
Ā 
Docker for developers
Docker for developersDocker for developers
Docker for developers
Ā 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
Ā 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Ā 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Ā 
Docker : Container Virtualization
Docker : Container VirtualizationDocker : Container Virtualization
Docker : Container Virtualization
Ā 
Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker
Ā 
Docker and Containers for Development and Deployment ā€” SCALE12X
Docker and Containers for Development and Deployment ā€” SCALE12XDocker and Containers for Development and Deployment ā€” SCALE12X
Docker and Containers for Development and Deployment ā€” SCALE12X
Ā 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An Introduction
Ā 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9
Ā 
How to Dockerize Web Application using Docker Compose
How to Dockerize Web Application using Docker ComposeHow to Dockerize Web Application using Docker Compose
How to Dockerize Web Application using Docker Compose
Ā 
Docker at Djangocon 2013 | Talk by Ken Cochrane
Docker at Djangocon 2013 | Talk by Ken CochraneDocker at Djangocon 2013 | Talk by Ken Cochrane
Docker at Djangocon 2013 | Talk by Ken Cochrane
Ā 
The ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of DockerThe ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of Docker
Ā 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Ā 
Docker - introduction
Docker - introductionDocker - introduction
Docker - introduction
Ā 

Andere mochten auch

Docker - container and lightweight virtualization
Docker - container and lightweight virtualization Docker - container and lightweight virtualization
Docker - container and lightweight virtualization
Sim Janghoon
Ā 

Andere mochten auch (20)

Introduction to Containers and Cloud
Introduction to Containers and CloudIntroduction to Containers and Cloud
Introduction to Containers and Cloud
Ā 
Introduction Into Docker Ecosystem
Introduction Into Docker EcosystemIntroduction Into Docker Ecosystem
Introduction Into Docker Ecosystem
Ā 
[DockerHN_2nd_meetup] Ecosystem & Orchestration Tools
[DockerHN_2nd_meetup] Ecosystem & Orchestration Tools[DockerHN_2nd_meetup] Ecosystem & Orchestration Tools
[DockerHN_2nd_meetup] Ecosystem & Orchestration Tools
Ā 
Development Swarm Cluster
Development Swarm ClusterDevelopment Swarm Cluster
Development Swarm Cluster
Ā 
Docker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EE
Ā 
Geospatial Data in Library Collections
Geospatial Data in Library CollectionsGeospatial Data in Library Collections
Geospatial Data in Library Collections
Ā 
DockerDublin Meetup - News about Docker 1.13
DockerDublin Meetup -  News about Docker 1.13DockerDublin Meetup -  News about Docker 1.13
DockerDublin Meetup - News about Docker 1.13
Ā 
Geospatial Data and Key Characteristics of Geospatial Data Analysis and Science
Geospatial Data and Key Characteristics of Geospatial Data Analysis and ScienceGeospatial Data and Key Characteristics of Geospatial Data Analysis and Science
Geospatial Data and Key Characteristics of Geospatial Data Analysis and Science
Ā 
National level strategy for Open Principles in Geospatial
National level strategy for Open Principles in GeospatialNational level strategy for Open Principles in Geospatial
National level strategy for Open Principles in Geospatial
Ā 
Geospatial Applications in Civil Engineering
Geospatial Applications in Civil EngineeringGeospatial Applications in Civil Engineering
Geospatial Applications in Civil Engineering
Ā 
Managing Environmental Data in the Google Age
Managing Environmental Data in the Google AgeManaging Environmental Data in the Google Age
Managing Environmental Data in the Google Age
Ā 
Syllabus Global Energy Transition Underway
Syllabus Global Energy Transition UnderwaySyllabus Global Energy Transition Underway
Syllabus Global Energy Transition Underway
Ā 
ā€Bare-Metal Container" presented at HPCC2016
ā€Bare-Metal Container" presented at HPCC2016ā€Bare-Metal Container" presented at HPCC2016
ā€Bare-Metal Container" presented at HPCC2016
Ā 
Docker compose and swarm
Docker compose and swarmDocker compose and swarm
Docker compose and swarm
Ā 
Agile and Scrum Methodology
Agile and Scrum MethodologyAgile and Scrum Methodology
Agile and Scrum Methodology
Ā 
From zero to hero with running your asp.net core 1 application in a docker co...
From zero to hero with running your asp.net core 1 application in a docker co...From zero to hero with running your asp.net core 1 application in a docker co...
From zero to hero with running your asp.net core 1 application in a docker co...
Ā 
agile with scrum methodology
agile with scrum methodology agile with scrum methodology
agile with scrum methodology
Ā 
Agile Scrum Methodology
Agile Scrum MethodologyAgile Scrum Methodology
Agile Scrum Methodology
Ā 
Small team scrum and kanban
Small team scrum and kanbanSmall team scrum and kanban
Small team scrum and kanban
Ā 
Docker - container and lightweight virtualization
Docker - container and lightweight virtualization Docker - container and lightweight virtualization
Docker - container and lightweight virtualization
Ā 

Ƅhnlich wie Docker and the Container Ecosystem

Ƅhnlich wie Docker and the Container Ecosystem (20)

Introducing Docker
Introducing DockerIntroducing Docker
Introducing Docker
Ā 
Running the Oracle SOA Suite Environment in a Docker Container
Running the Oracle SOA Suite Environment in a Docker ContainerRunning the Oracle SOA Suite Environment in a Docker Container
Running the Oracle SOA Suite Environment in a Docker Container
Ā 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
Ā 
Docker Workshop
Docker WorkshopDocker Workshop
Docker Workshop
Ā 
Tech talk on docker with demo
Tech talk on docker with demoTech talk on docker with demo
Tech talk on docker with demo
Ā 
Docker
DockerDocker
Docker
Ā 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
Ā 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
Ā 
Powercoders Ā· Docker Ā· Fall 2021.pptx
Powercoders Ā· Docker Ā· Fall 2021.pptxPowercoders Ā· Docker Ā· Fall 2021.pptx
Powercoders Ā· Docker Ā· Fall 2021.pptx
Ā 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
Ā 
Docker intro
Docker introDocker intro
Docker intro
Ā 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Ā 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
Ā 
A Hands-on Introduction to Docker
A Hands-on Introduction to DockerA Hands-on Introduction to Docker
A Hands-on Introduction to Docker
Ā 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 aug
Ā 
Lab docker
Lab dockerLab docker
Lab docker
Ā 
Deploying .net core apps to Docker - dotnetConf Local Bengaluru
Deploying .net core apps to Docker - dotnetConf Local BengaluruDeploying .net core apps to Docker - dotnetConf Local Bengaluru
Deploying .net core apps to Docker - dotnetConf Local Bengaluru
Ā 
Docker Intro
Docker IntroDocker Intro
Docker Intro
Ā 
How to _docker
How to _dockerHow to _docker
How to _docker
Ā 
Dockers & kubernetes detailed - Beginners to Geek
Dockers & kubernetes detailed - Beginners to GeekDockers & kubernetes detailed - Beginners to Geek
Dockers & kubernetes detailed - Beginners to Geek
Ā 

KĆ¼rzlich hochgeladen

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
Ā 
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female serviceCALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
Ā 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
Ā 

KĆ¼rzlich hochgeladen (20)

Vip Call Girls Noida āž”ļø Delhi āž”ļø 9999965857 No Advance 24HRS Live
Vip Call Girls Noida āž”ļø Delhi āž”ļø 9999965857 No Advance 24HRS LiveVip Call Girls Noida āž”ļø Delhi āž”ļø 9999965857 No Advance 24HRS Live
Vip Call Girls Noida āž”ļø Delhi āž”ļø 9999965857 No Advance 24HRS Live
Ā 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
Ā 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
Ā 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
Ā 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
Ā 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Ā 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Ā 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
Ā 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
Ā 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Ā 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
Ā 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
Ā 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanā€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanā€™s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanā€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanā€™s ...
Ā 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
Ā 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
Ā 
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female serviceCALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON āž„8923113531 šŸ”Call Girls Badshah Nagar Lucknow best Female service
Ā 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
Ā 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
Ā 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
Ā 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Ā 

Docker and the Container Ecosystem

  • 1. Docker Overview Macys.com ClubCode Friday March 6, 2015
  • 2. Hardware Virtualization Virtualizing the Physical Hardware ļ‚§ VMware vSphere Hypervisor ļ‚§ Xen ļ‚§ KVM ļ‚§ VirtualBox
  • 3. OS Virtualization Virtualizing the Operating System ļ‚§ Containers have existed on *nix systems for some time ļ‚§ An extension of the 'chrootā€˜ concept ļ‚§ Examples: ļ‚§ Linux Containers ļ‚§ BSD ā€œJailsā€ ļ‚§ Solaris Containers ā€œUnderstanding Dockerā€: https://docs.docker.com/introduction/understanding-docker/
  • 4. Container Implementations From Wikipedia: Operating-system-level Virtualization
  • 5. What is Docker? ā€¢ Docker helps to create and manage containers easy ā€¢ Docker creates an ecosystem similar to Github and Maven that makes it easy to share images ā€¢ An image is a shareable snapshot of software ā€¢ A container is a running instance of an image ā€¢ Images can be built and managed on your local workstation ā€¢ Images can be pulled and pushed from private and public repos What is Docker? https://www.docker.com/whatisdocker/
  • 6. Currently Linux-Centric ā€¢ Linux already has container support ā€¢ Container support is already in Linux ā€¢ Uses Linux namespaces and control groups (cgroups) ā€¢ So, what does Docker bring to the table? ā€¢ makes it easy to build images ā€¢ creates images that are portable ā€¢ provides an ecosystem to help users share their images ā€¢ Shared Registry ā€¢ is open-source ā€¢ has a very active community ā€¢ provides security
  • 7. What About Mac OS? ā€¢ Can run Docker under Mac OS! ā€¢ Until native OS support is built ā€“ Use 'boot2docker' ā€¢ Full instructions: https://docs.docker.com/installation/mac/ Docker daemon is native under Linux boot2docker runs a lightweight VM that hosts the Docker daemon
  • 8. What About Windows? ā€¢ Can run Docker under Windows ā€¢ Until native OS support is built ā€“ Use 'boot2docker' Uses the standard Windows installer Startup screen looks like this: See instructions at: https://docs.docker.com/installation/windows
  • 9. Docker Ecosystem ā€¢ Docker provides a centralized repository of Images ā€¢ http://registry.hub.docker.com ā€¢ 3rd Party private repos are available too ā€¢ Or set up your own on-prem repos ā€¢ Similar to Github & Maven Diagrams from ā€œDocker in Actionā€, Manning Publications
  • 10. Demo
  • 11. Demo: Install Docker https://docs.docker.com/installation/ubuntulinux/ Use the ā€œDocker-maintained Package Installationā€ section For the latest version of Docker Check for HTTPS transport for apt: sudo apt-get update sudo apt-get install apt-transport-https Create a new apt sources file ā€“ docker.list sudo vi /etc/apt/sources.d/docker.list and add the following line: deb https://get.docker.com/ubuntu docker main Finish the incantation with an update and an install: sudo apt-get update sudo apt-get install lxc-docker And youā€™re done! For other distros: https://docs.docker.com/installation/
  • 12. Demo: Find Images For a web interface: https://registry.hub.docker.com/ Or you can search for images using the CLI: sudo docker search busybox ā€¢ Stars indicate the popularity of the image ā€¢ Official [OK] indicate if the image is built/maintained by Docker.com peterc@L4377743:~$ sudo docker search busybox [sudo] password for peterc: NAME DESCRIPTION STARS OFFICIAL AUTOMATED busybox Busybox base image. 135 [OK] progrium/busybox 36 [OK] jeanblanchard/busybox-java Minimal Docker image with Java 21 [OK] jeanblanchard/busybox-tomcat Minimal Docker image with Apache Tomcat 10 [OK] radial/busyboxplus Full-chain, Internet enabled, busybox made... 4 [OK] sequenceiq/busybox 1 [OK] peelsky/zulu-openjdk-busybox 1 [OK] skomma/busybox-data Docker image suitable for data volume cont... 1 [OK] alars/busybox-go-webapp 0 [OK] ā€¦ justicefries/busybox-ssl Busybox, with SSL support 0 [OK] ā€¦ shingonoide/archlinux-busybox Arch Linux, a lightweight and flexible Lin... 0 [OK] openshift/busybox-http 0 [OK] ggtools/busybox-ubuntu Busybox ubuntu version with extra goodies 0 [OK] akolosov/busybox 0 [OK] socketplane/busybox 0 [OK] powellquiring/busybox 0 [OK] openshift/busybox-http-app 0 [OK] peterc@L4377743:~$
  • 13. Demo: Trusted Images ā€œOfficialā€ Docker images https://registry.hub.docker.com/search?q=library&searchfield= or via CLI: peterc@L4377743:~$ sudo docker search library NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Official Ubuntu base image 1404 [OK] centos The official build of CentOS. 865 [OK] nginx Official build of Nginx. 646 [OK] node Node.js is a JavaScript-based platform for... 559 [OK] postgres The PostgreSQL object-relational database ... 554 [OK] redis Redis is an open source key-value store th... 547 [OK] mysql MySQL is a widely used, open-source relati... 507 [OK] mongo MongoDB document databases provide high av... 478 [OK] debian (Semi) Official Debian base image. 368 [OK] jenkins Official Jenkins Docker image 284 [OK] wordpress The WordPress rich content management syst... 234 [OK] registry Containerized docker registry 204 [OK] golang Go (golang) is a general purpose, higher-l... 166 [OK] rails Rails is an open-source web application fr... 144 [OK] fedora Official Fedora 21 base image and semi-off... 144 [OK] busybox Busybox base image. 142 [OK] python Python is an interpreted, interactive, obj... 138 [OK] java Java is a concurrent, class-based, and obj... 137 [OK] php While designed for web development, the PH... 136 [OK] ruby Ruby is a dynamic, reflective, object-orie... 133 [OK] tomcat Apache Tomcat is an open source implementa... 77 [OK] perl Perl is a high-level, general-purpose, int... 29 [OK] ubuntu-upstart Upstart is an event-based replacement for ... 21 [OK] peterc@L4377743:~$
  • 14. Demo: Running an Image First time you ā€˜runā€™ an image, you download the image The image, once running, is called a ā€˜containerā€™ peterc@L4377743:~$ sudo docker run -ti busybox:latest / # ls -alp / total 56 drwxr-xr-x 24 root root 4096 Feb 27 19:32 ./ drwxr-xr-x 24 root root 4096 Feb 27 19:32 ../ -rwxr-xr-x 1 root root 0 Feb 27 19:32 .dockerenv -rwxr-xr-x 1 root root 0 Feb 27 19:32 .dockerinit drwxrwxr-x 2 root root 4096 May 22 2014 bin/ drwxr-xr-x 5 root root 380 Feb 27 19:32 dev/ drwxr-xr-x 6 root root 4096 Feb 27 19:32 etc/ drwxrwxr-x 4 root root 4096 May 22 2014 home/ drwxrwxr-x 2 root root 4096 May 22 2014 lib/ lrwxrwxrwx 1 root root 3 May 22 2014 lib64 -> lib/ lrwxrwxrwx 1 root root 11 May 22 2014 linuxrc -> bin/busybox drwxrwxr-x 2 root root 4096 Feb 27 2014 media/ drwxrwxr-x 2 root root 4096 Feb 27 2014 mnt/ drwxrwxr-x 2 root root 4096 Feb 27 2014 opt/ dr-xr-xr-x 321 root root 0 Feb 27 19:32 proc/ drwx------ 2 root root 4096 Feb 27 19:32 root/ lrwxrwxrwx 1 root root 3 Feb 27 2014 run -> tmp/ drwxr-xr-x 2 root root 4096 May 22 2014 sbin/ dr-xr-xr-x 13 root root 0 Feb 27 19:32 sys/ drwxrwxrwt 3 root root 4096 May 22 2014 tmp/ drwxrwxr-x 6 root root 4096 May 22 2014 usr/ drwxrwxr-x 4 root root 4096 May 22 2014 var/ / # exit peterc@L4377743:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bc3868dd6aa busybox:latest "/bin/sh" 15 minutes ago Exited (0) 8 seconds ago cocky_wilson peterc@L4377743:~$
  • 15. Demo: Help At this point, youā€™re wondering: ā€œHow do I remember all this?ā€ peterc@L4377743:~$ docker help ā€¦ ā€¦ Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from a container's filesystem to the host path create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive login Register or log in to a Docker registry server logout Log out from a Docker registry server logs Fetch the logs of a container port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from a Docker registry server push Push an image or a repository to a Docker registry server rename Rename an existing container restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container ā€¦
  • 16. Demo: Help And you can get extensive help on each command: peterc@L4377743:~$ docker help run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR. --add-host=[] Add a custom host-to-IP mapping (host:ip) -c, --cpu-shares=0 CPU shares (relative weight) --cap-add=[] Add Linux capabilities --cap-drop=[] Drop Linux capabilities --cidfile="" Write the container ID to the file --cpuset="" CPUs in which to allow execution (0-3, 0,1) -d, --detach=false Detached mode: run the container in the background and print the new container ID --device=[] Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm) --dns=[] Set custom DNS servers --dns-search=[] Set custom DNS search domains (Use --dns-search=. if you don't wish to set the search domain) -e, --env=[] Set environment variables --entrypoint="" Overwrite the default ENTRYPOINT of the image --env-file=[] Read in a line delimited file of environment variables --expose=[] Expose a port or a range of ports (e.g. --expose=3300-3310) from the container without publishing it to your host -h, --hostname="" Container host name ā€¦ All the command details are available in the Docker website docs: https://docs.docker.com/reference/commandline/cli/
  • 17. Demo: node.js + redis app Letā€™s spin up a node.js & redis app: ā€¢ Arbitrarily picked nodejs-todo app off github for this demo ā€¢ It uses these modules: ejs, express, underscore, and of course, redis 1. Start a redis instance peterc@L4377743:~$ sudo docker run ā€“d --name redis redis:latest fb173fb5194afa5fbeaa24d2acf1b6f9dd8e72cfefa6088ff3b3e4e9b3059c66 peterc@L4377743:~$ 2. Check for the running container peterc@L4377743:~$ sudo docker ps -a [sudo] password for peterc: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fb173fb5194a redis:latest "redis-server /etc/r About an hour ago Up About an hour 6379/tcp redis 3bc3868dd6aa busybox:latest "/bin/sh" 4 hours ago Exited (0) 4 hours ago cocky_wilson peterc@L4377743:~$ We did not specify a port on the ā€˜runā€™ command Default port for redis is 6379 All networking access is explicit; it has to be specified on ā€˜runā€™ if itā€™s required Try ā€˜netstatā€™ or ā€˜telnetā€™ā€¦ No 6379 port listening. Run in detached mode Give it a name so itā€™s easy to link No port specified. Never needs to communicate outside containers
  • 18. Demo: node.js + redis app The redis container is now up and running Letā€™s get a sample node.js app to run and use the redis database 3. Get nodejs-todo peterc@L4377743:~/tmp$ git clone https://github.com/amirrajan/nodejs-todo.git Cloning into 'nodejs-todo'... remote: Counting objects: 32, done. remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 32 Unpacking objects: 100% (32/32), done. Checking connectivity... done. peterc@L4377743:~/tmp$ 4. Examine source. Make a one-line modification peterc@L4377743:~/tmp/nodejs-todo$ vi server.js peterc@L4377743:~/tmp/nodejs-todo$ git diff server.js diff --git a/server.js b/server.js index 20263cd..59323fe 100644 --- a/server.js +++ b/server.js @@ -11,7 +11,7 @@ var client = null; if(process.env.REDISTOGO_URL) { //heroku client = require('redis-url').connect(process.env.REDISTOGO_URL); } else if(config.env == "development") { - client = redis.createClient(); + client = redis.createClient(secret.redisPort, secret.redisMachine); } else { //nodejitsu client = redis.createClient(secret.redisPort, secret.redisMachine); client.auth(secret.redisAuth, function (err) { peterc@L4377743:~/tmp/nodejs-todo$
  • 19. Demo: node.js + redis app There are a couple of code changes needed so that the app runs under Docker First, the nodejs-todo needs one dependency updateā€¦ 5. Modify package.json (Lock in express version 3.0.1, since newer versions require code changes) peterc@L4377743:~/tmp/nodejs-todo$ git diff package.json diff --git a/package.json b/package.json index 39bd9de..052ecff 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "url": "git://github.com/amirrajan/nodejs-todo.git" }, "dependencies": { - "express": "~3.0.1", + "express": "3.0.1", "ejs": "~0.8.3", "jasmine-node": "~1.0.26", "underscore": "~1.4.2", peterc@L4377743:~/tmp/nodejs-todo$
  • 20. Demo: node.js + redis app When we start the node container, it will need to connect with redis ā€¢ There are many ways to do this ā€¢ Letā€™s use the Docker CLI to get the redis IP address 6. Get redis containerā€™s IP address peterc@L4377743:~/tmp/nodejs-todo$ export DOCKER_IP=`sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' > fb173fb5194a` peterc@L4377743:~/tmp/nodejs-todo$ echo $DOCKER_IP 172.17.0.2 peterc@L4377743:~/tmp/nodejs-todo$ 7. Set up nodejs-todoā€™s configuration file peterc@L4377743:~/tmp/nodejs-todo$ sed -e "s/"redisMachine": "",/"redisMachine": "$DOCKER_IP",/" > lib/secret.js.example > lib/secret.js peterc@L4377743:~/tmp/nodejs-todo$ cat lib/secret.js module.exports = { "redisPort": 6379, "redisMachine": "172.17.0.2", "redisAuth": "", }; peterc@L4377743:~/tmp/nodejs-todo$ Now the nodejs-todo app is ready to go (Note that all of this is easily scriptable.)
  • 21. Demo: node.js + redis app Now letā€™s fire up the node.js container Weā€™ll bring it up as a terminal session, so you can see its internals That will also allow us to install the ā€˜requiredā€™ modules Since the generic node.js container doesnā€™t know anything about the nodejs-todo app Weā€™ll inject that app into the container when we start it 8. Start node.js container peterc@L4377743:~/tmp/nodejs-todo$ sudo docker run -ti -p 3000:3000 -v ~/tmp/nodejs-todo:/opt/nodejs-todo > --link redis:redis library/nodejs:0.10.36 /bin/bash bash: -e: command not found [ root@4b47ff312f4a:/data ]$ cd /opt/nodejs-todo [ root@4b47ff312f4a:/opt/nodejs-todo {master *} ]$ cat lib/secret.js module.exports = { "redisPort": 6379, "redisMachine": "172.17.0.2", "redisAuth": "", }; The --link option links this node container to the already running redis container. Does the secret.js file look familiar? Weā€™re now accessing it inside the container. Expose port 3000 (as 3000) Place node app under /opt folder Interactive terminal session
  • 22. Demo: node.js + redis app Starting the node.js container, continuedā€¦ ā€¢ The node.js container is now running ā€¢ But before we start the node server, nodejs-todo requires 4 modules 9. Installing the appā€™s node dependencies in the container root@595627a55592:/# cd /opt/nodejs-todo/ root@595627a55592:/opt/nodejs-todo# npm install underscore@1.4.4 node_modules/underscore ejs@0.8.8 node_modules/ejs redis@0.8.6 node_modules/redis jasmine-node@1.0.28 node_modules/jasmine-node ā”œā”€ā”€ walkdir@0.0.7 ā”œā”€ā”€ coffee-script@1.9.1 ā”œā”€ā”€ requirejs@2.1.16 ā””ā”€ā”€ jasmine-reporters@2.0.5 (mkdirp@0.3.5) express@3.0.1 node_modules/express ā”œā”€ā”€ methods@0.0.1 ā”œā”€ā”€ fresh@0.1.0 ā”œā”€ā”€ cookie-signature@0.0.1 ā”œā”€ā”€ range-parser@0.0.4 ā”œā”€ā”€ cookie@0.0.4 ā”œā”€ā”€ crc@0.2.0 ā”œā”€ā”€ commander@0.6.1 ā”œā”€ā”€ mkdirp@0.3.3 ā”œā”€ā”€ debug@2.1.2 (ms@0.7.0) ā”œā”€ā”€ send@0.1.0 (mime@1.2.6) ā””ā”€ā”€ connect@2.6.2 (pause@0.0.1, bytes@0.1.0, formidable@1.0.11, qs@0.5.1) root@595627a55592:/opt/nodejs-todo# 10. Start the server [ root@4b47ff312f4a:/opt/nodejs-todo {master *} ]$ node server.js
  • 23. Demo: node.js + redis app The node.js container is now running the nodejs-todo app We can now run the app in a browser 10. Start browser on localhost:3000 Play around. Stop the node container. Restart it. The redis data is still there!
  • 24. New Docker Features in Development
  • 25. Docker Swarm Run many containers as a cluster ļ‚§ Turns pool of Docker hosts into a single, virtual host ļ‚§ Swarm uses the existing Docker API ļ‚§ Pluggable backends ļ‚§ Allows swapping with more powerful backends ļ‚§ For example: Mesos ļ‚§ TLS support for all server communications ļ‚§ CLI to Swarm ļ‚§ Swarm to Docker nodes https://github.com/docker/swarm/
  • 26. Docker Machine Makes Docker host creation much easier ļ‚§ Works on: ļ‚§ Local laptop ļ‚§ On cloud providers ļ‚§ In customer datacenters ļ‚§ Single command: ļ‚§ Creates servers ļ‚§ Installs Docker on them ļ‚§ Configures Docker client to communicate with them ļ‚§ In beta https://github.com/docker/machine
  • 27. Docker Collaborations These are just some of the integrations: ā€¢ Google Compute Engine & Kubernetes ā€¢ IBM Containers ā€¢ Fedora Container & Docker Support ā€¢ Openstack & Docker ā€¢ Rackspace & Docker ā€¢ Red Hat (Project Atomic) ā€¢ VMware & Pivotal ā€¢ Microsoft Azure
  • 28. Other Vendors In the Container Space
  • 29. Container Vendors 1 Vagrant Linux, Mac & Windows Manages virtual dev environments by wrapping virtualization & configuration. LXD Ubuntu Linux Provides a container-based hypervisor for creating and managing container clusters. Project Atomic Red Hat Linux A direct competitor to Docker, focusing initially on the Red Hat distros. Additionally supporting large-scale cluster support. EC2 Container Service Amazon Linux Docker container support in an AWS EC2 context. Flockport Startup Linux Very small, recent startup in direct competitiion with Docker.
  • 30. Container Vendors 2 Kubernetes Google Linux Provides large-scale cluster management for Docker Containers. Shipyard Startup Linux Provides a management console for Docker Containers. Tutum Startup Linux Provides cloud-based support for setup and management of dev environments to many different cloud providers. Rocket CoreOS CoreOS Provides container support for CoreOS which is a fork of ChromeOS. VERY immature product. Spoon Xenocode Windows Provides container-like support for Windows. Meanwhile, Microsoft may build in LXC-type support into Windows... Docker Swarm Linux Provides large-scale cluster management for Docker Containers. In beta.
  • 31. Vagrant ā€¢What is it? Vagrant is computer software for creating and configuring virtual development environments. It can be seen as a wrapper around virtualization software such as VirtualBox, KVM, VMware and around configuration management software such as Ansible, Chef, Salt or Puppet. Wikipedia.org ā€¢Since? ā€¢2012. Current Release: 1.6.5 (9/4/2014) ā€¢Open Source? ā€¢Yes. MIT License ā€¢On Github: https://github.com/mitchellh/vagrant ā€¢Runs on? ā€¢Windows, MacOS & Linux ā€¢Cloud & Virtualization Ready? ā€¢VirtualBox, VMware, AWS, OpenStack. ā€¢Compatible with Docker. ā€¢Requirements? ā€¢Ruby 2.0 and LXC or libvert ā€¢Resources? ā€¢Website: https://www.vagrantup.com ā€¢Repository: https://atlas.hashicorp.com/boxes/search
  • 32. LXD: ā€œThe Linux Container Daemonā€ ā€¢What is it? LXD, pronounced Lex-Dee, is a container-based hypervisor sponsored by Canonical, the company that supports Ubuntu Linux. It provides a way to manage containers, via a REST API and a CLI. Tycho Anderson (Canonical) at Linux.conf.au 2015 Auckland, New Zealand ā€¢Since? ā€¢Announced at Paris OpenStack Summit 2014 (November) ā€¢0.1 release January 2015, container management only ā€¢Open Source? ā€¢Yes. Apache 2.0 License. ā€¢On Github: https://github.com/lxc/lxd ā€¢Runs? ā€¢Linux distros under Ubuntu. No Windows. No Mac. ā€¢Cloud & Virtualization Ready? ā€¢OpenStack. Compatible with Docker. ā€¢Requirements? ā€¢Golang 3.0+ and LXC ā€¢Resources? ā€¢Website: http://www.ubuntu.com/cloud/tools/lxd
  • 33. Project Atomic ā€¢What is it? Platform for rolling out Docker-based containizered apps. Supports atomic upgrades and rollbacks. Web-based Cockpit provides storage, services and logging control, plus ability to browse and inspect images and containers. Integrates with Kubernetes. Project Atomic Website ā€¢Since? ā€¢Announced last year at Red Hat Summit ā€¢Included in Fedora 21 (12/9/2014) ā€¢Open Source? ā€¢Yes. GPL 2 License. ā€¢On Github: https://github.com/projectatomic/atomic-site/ ā€¢Runs? ā€¢Fedora (now) and Centos & RHEL (later). ā€¢Cloud & Virtualization Ready? ā€¢Compatible with Docker. ā€¢Requirements? ā€¢Virtual Machine Manager (virt-manager) for Linux ā€¢VirtualBox for Windows & Mac OS X ā€¢Resources? ā€¢Website: http://www.projectatomic.io/
  • 34. Amazon EC2 Container Service ā€¢What is it? Amazon EC2 Container Service is a highly scalable, high performance container management service that supports Docker containers and allows you to easily run distributed applications on a managed cluster of Amazon EC2 instances. Amazon EC2 Container Service website ā€¢Since? ā€¢Currently in Preview mode ā€¢Open Source? ā€¢No. ā€¢Runs? ā€¢EC2 Instances ā€¢Cloud & Virtualization Ready? ā€¢Compatible with Docker. ā€¢Requirements? ā€¢Amazon EC2 Instances ā€¢Resources? ā€¢Website: http://aws.amazon.com/ecs/
  • 35. Flockport ā€¢What is it? Flockport provides web stacks and application in LXC containers that can be deployed on any Linux server or VM in seconds. Looks like a direct competitor to Docker. Very small company. Flockport FAQs ā€¢Since? ā€¢Startup. September 9, 2014. ā€¢Open Source? ā€¢??? No information on their website or in any articles. ā€¢Runs? ā€¢Any Linux that supports LXC ā€¢Cloud & Virtualization Ready? ā€¢They ā€œ...will shortly enable users to deploy Flockport containers directly to a number of public clouds directly from Flockport.com...ā€ ā€¢Support for KVM for local work ā€¢Requirements? ā€¢Container Hub: http://www.flockport.com/containers/ ā€¢Resources? ā€¢Website: http://www.flockport.com/
  • 36. Kubernetes ā€¢What is it? Kubernetes is an open source container cluster manager. It schedules any number of container replicas across a group of node instances. A master instance exposes the Kubernetes API, through which tasks are defined. Kubernetes spawns containers on nodes to handle the defined tasks. The number and type of containers can be dynamically modified according to need. An agent (a kubelet) on each node instance monitors containers and restarts them if necessary. Kubernetes is optimized for Google Cloud Platform, but can run on any physical or virtual machine.. Kubernetes project website ā€¢Since? ā€¢June 1, 2014. ā€¢Open Source? ā€¢Yes. Apache 2.0 License. ā€¢Github repo: https://github.com/googlecloudplatform/kubernetes ā€¢Runs? ā€¢Docker Images ā€¢Cloud & Virtualization Ready? ā€¢Yes. ā€¢Requirements? ā€¢Hosting: Google Cloud Platform, Digital Ocean ā€¢Resources? ā€¢Website: http://kubernetes.io/
  • 37. Shipyard ā€¢What is it? Built on the Docker cluster management toolkit Citadel, Shipyard gives you the ability to manage Docker resources including containers, hosts and more. Shipyard differs from other management applications in that it promotes composability. Using "Extension Images" you can add functionality such as application routing and load balancing, centralized logging, deployment and more. Shipyard Project website ā€¢Since? ā€¢June 2013 ā€¢Open Source? ā€¢Yes. Apache 2.0 License. ā€¢Github site: https://github.com/shipyard/shipyard ā€¢Runs? ā€¢Standard Docker Containers ā€¢Cloud & Virtualization Ready? ā€¢Uses Citadel for scheduling containers on a Docker cluster. ā€¢Requirements? ā€¢Golang 1.3+ ā€¢Resources? ā€¢Website: http://shipyard-project.com/
  • 38. Tutum ā€¢What is it? Web-hosted Docker container support. Build Docker compatible images and deploy the containers to any cloud provider. Tutum website ā€¢Since? ā€¢In beta. ā€¢Open Source? ā€¢No. Proprietary. ā€¢Runs? ā€¢Docker-compatible containers ā€¢Cloud & Virtualization Ready? ā€¢Yes. ā€¢Requirements? ā€¢Tutum Private Registry ā€“ requires account creation. ā€¢Resources? ā€¢Website: https://www.tutum.co
  • 39. Rocket ā€¢What is it? Part of the CoreOS platform. CoreOS is a fork of ChromeOS. Partners with Pivotal. Direct competitor with Docker but very immature product. Different philosophy from Docker: focus on core container management, not on creating a full container platform. CoreOS is building a container runtime, Rocket (12/1/2014) ā€¢Since? ā€¢Prototype version currently on Github ā€¢Open Source? ā€¢Yes. Apache 2.0 License. ā€¢Github: https://github.com/coreos/rocket ā€¢Runs? ā€¢On CoreOS ā€¢Cloud & Virtualization Ready? ā€¢Direct competitor of Docker. ā€¢Run CoreOS instances on Amazon AWS, Google or Rackspace now. ā€¢Requirements? ā€¢Run Linux distros later... ā€¢Resources? ā€¢Website: https://github.com/coreos/rocket
  • 40. Spoon ā€¢What is it? Container support in Windows. Uses Spoon VM instead of LXC. Hosts a component repository. What is Spoon? ā€¢Since? ā€¢Xenocode (2006-2010), then rebranded to Spoon in 2010. ā€¢Open Source? ā€¢No. Proprietary. ā€¢Runs? ā€¢Windows containers ā€¢Cloud & Virtualization Ready? ā€¢Docker and Spoon operate on different platforms (Linux vs. Windows). ā€¢Requirements? ā€¢Windows ā€¢Spoon.net Hub: https://spoon.net/hub ā€¢Third-party Hub: http://turbo.net ā€¢Resources? ā€¢Website: https://spoon.net/