SlideShare a Scribd company logo
Introducing Docker
Francesco Pantano
francesco.pantano@opmbx.it
March 17, 2016
#Outline
1 Virtualization
2 Containers
3 Docker in practice
4 Docker Compose
5 Continuous integration
Virtualization 2/24
Thinking about VMM
The Key component is the Hypervisor, a Virtual Machine Monitor
that can be thought as an API that provides access to the hw level
for the VMs.
Hosted ()
abstract guest operating
systems from the host one
Bare Metal()
run directly on the host’s
hardware
VMware Workstation/Player, VirtualBox and QEMU are examples
of hosted hypervisors
Virtualization 3/24
Deep into Light Virtualization
Born on top of LXC project, a set of tools built on a userspace
interface for the Linux kernel containment features, LV uses the
following kernel features to contain processes:
Kernel namespaces (ipc, uts, mount, pid, network and user)
Chroots (using pivot root)
CGroups (control groups)
Relies on your existing
system;
Services stay in the kernel
host;
Virtualization 4/24
Cgroups
Cgroups (abbreviated from control groups) is a Linux kernel feature
that limits, accounts for and isolates the resource usage (CPU,
memory, disk I/O, network, etc.) of a collection of processes.
Cgroups provides:
Resource Limiting: groups can be set to not exceed a
configured memory limit
Prioritization: some groups may get a larger share of CPU
utilization or disk I/O
Accounting: measures how much resources certain systems
use
Control: freezing the groups of processes, their checkpointing
and restarting
Virtualization 5/24
Namespaces
Isolation
Groups of processes are separated so they cannot ”see” resources
in other groups. For example, a PID namespace provides a
separate enumeration of process identifiers within each namespace.
struct upid {
int nr; // the PID value
// namespace where this PID is
relevant
struct pid_namespace *ns;
// ...
};
struct pid {
// number of upids
int level;
// array of upids
struct upid numbers [0];
};
Virtualization 6/24
The Layered Filesystem
Union file systems, or UnionFS, are file systems that operate by
creating layers, making them very lightweight and fast.
Copy-On-Write
It enables sharing that promotes smaller images
Virtualization 7/24
#Outline
1 Virtualization
2 Containers
3 Docker in practice
4 Docker Compose
5 Continuous integration
Containers 8/24
Why Containers?
Fast deployment time
It’s cheap and flexible
Scalability and support
Docker as standardized platform
Docker is a platform for developing, shipping,
and running applications using container
virtualization technology.
Containers 9/24
The Docker environment
Containers 10/24
Docker: Terminology
Image: layered filesystem where each layer references the layer
below
Dockerfile: build script that defines:
an existing image as starting point
a set of instructions that augment that
image (each of which results in another
layered filesystem)
metadata such as ports exposed
the command to executed when the
image is run
Container: runtime instance of an image
plus a read/write layer
Docker Hub: centralized repository of docker images
Containers 11/24
#Outline
1 Virtualization
2 Containers
3 Docker in practice
4 Docker Compose
5 Continuous integration
Docker in practice 12/24
Quick Start
Linux - run natively e.g. on Ubuntu
apt-get install docker.io
curl -sSL https://get.docker.com/ubuntu — sh
Mac / Windows run under VirtualBox
http://boot2docker.io
Docker Machine - https://github.com/docker/machine
docker machine -d virtual-box dev
docker machine -d openstack test
docker machine -d softlayer ... prod
Verify ..
$ docker version
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
.. your installation
$ docker info
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
Docker in practice 13/24
Quick Start
Linux - run natively e.g. on Ubuntu
apt-get install docker.io
curl -sSL https://get.docker.com/ubuntu — sh
Mac / Windows run under VirtualBox
http://boot2docker.io
Docker Machine - https://github.com/docker/machine
docker machine -d virtual-box dev
docker machine -d openstack test
docker machine -d softlayer ... prod
Verify ..
$ docker version
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
.. your installation
$ docker info
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
Docker in practice 13/24
Quick Start
Linux - run natively e.g. on Ubuntu
apt-get install docker.io
curl -sSL https://get.docker.com/ubuntu — sh
Mac / Windows run under VirtualBox
http://boot2docker.io
Docker Machine - https://github.com/docker/machine
docker machine -d virtual-box dev
docker machine -d openstack test
docker machine -d softlayer ... prod
Verify ..
$ docker version
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
.. your installation
$ docker info
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
Docker in practice 13/24
Quick Start
Linux - run natively e.g. on Ubuntu
apt-get install docker.io
curl -sSL https://get.docker.com/ubuntu — sh
Mac / Windows run under VirtualBox
http://boot2docker.io
Docker Machine - https://github.com/docker/machine
docker machine -d virtual-box dev
docker machine -d openstack test
docker machine -d softlayer ... prod
Verify ..
$ docker version
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
.. your installation
$ docker info
Client/Server:
Version: 1.9.1
OS/Arch: linux/amd64
Docker in practice 13/24
The Docker command line
docker search
Search for images in the docker hub
docker pull
Get a selected image from the docker hub
docker images
List all downloaded images
docker run
start a container
docker ps
List running images
docker build
Build an image from a Dockerfile
docker start/stop/kill
Containers management
docker rm/rmi
Remove a container / image
Docker in practice 14/24
Run your first container
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL A
ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [
ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [
$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
92ec6d044cb3: Downloading 34.57 MB/65.68 MB
Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54
Status: Downloaded newer image for ubuntu:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB
chef-server latest f3cd15749fa8 21 months ago 1.043 GB
$ docker run -i -t ubuntu /bin/bash
root@e550480534b1:/# apt-get update && apt-get install -y nginx
Docker in practice 15/24
Run your first container
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL A
ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [
ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [
$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
92ec6d044cb3: Downloading 34.57 MB/65.68 MB
Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54
Status: Downloaded newer image for ubuntu:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB
chef-server latest f3cd15749fa8 21 months ago 1.043 GB
$ docker run -i -t ubuntu /bin/bash
root@e550480534b1:/# apt-get update && apt-get install -y nginx
Docker in practice 15/24
Run your first container
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL A
ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [
ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [
$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
92ec6d044cb3: Downloading 34.57 MB/65.68 MB
Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54
Status: Downloaded newer image for ubuntu:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB
chef-server latest f3cd15749fa8 21 months ago 1.043 GB
$ docker run -i -t ubuntu /bin/bash
root@e550480534b1:/# apt-get update && apt-get install -y nginx
Docker in practice 15/24
Run your first container
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL A
ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [
ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [
$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
92ec6d044cb3: Downloading 34.57 MB/65.68 MB
Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54
Status: Downloaded newer image for ubuntu:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB
chef-server latest f3cd15749fa8 21 months ago 1.043 GB
$ docker run -i -t ubuntu /bin/bash
root@e550480534b1:/# apt-get update && apt-get install -y nginx
Docker in practice 15/24
The Dockerfile
Dockerfile instruct on how to build the image automatically
Dockerfile syntax:
FROM
RUN
ENV
EXPOSE
ADD
CMD
$ docker build -t fmount/nginx .
$ docker run -d -p 80 –name mystaticwebsite -v
$PWD/website:/var/www/html/website fmount/nginx nginx
Docker in practice 16/24
The Docker Hub
It provides a mechanism to share images in the docker-hub, a
repository of shareable collection of tagged images
$ docker commit/login
Exercise: Be Social :D
Register in the Docker Hub
Connect it to your Github and build
Docker in practice 17/24
#Outline
1 Virtualization
2 Containers
3 Docker in practice
4 Docker Compose
5 Continuous integration
Docker Compose 18/24
Get an app running in one command
#!/ bin/python
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host="localhost" ,
port =6379)
@app.route("/")
def hello ():
redis.incr("hits")
return "I have been seen %s
times .n"
% redis.get("hits")
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=
True)
requirements.txt
flask package
redis package
Docker Compose 19/24
Get an app running in one command
Steps to follow
Write your Dockerfiles
Build your containers
Prepare your application
Think about the infrastructure
Compose in a Microservices fashion
Build and start the containers
$ docker-compose up
Docker Compose 20/24
#Outline
1 Virtualization
2 Containers
3 Docker in practice
4 Docker Compose
5 Continuous integration
Continuous integration 21/24
Use case: Continuous Integration
Continuous integration 22/24
Thank you! Questions?
More examples at
https://github.com/fmount/containers
Continuous integration 23/24
References
The Docker Book
www.dockerbook.com
How2dock
https://github.com/how2dock/docbook
Docker in Action
https://www.manning.com/books/docker-in-action
Official doc
https://docs.docker.com/
SlideShare Docker Channel
http://www.slideshare.net/Docker/
Golang tour :D
https://tour.golang.org/
Continuous integration 24/24

More Related Content

What's hot

ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
Sabyrzhan Tynybayev
 
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
Jérôme Petazzoni
 
Docker
DockerDocker
Docker
Chen Chun
 
Docker
DockerDocker
Docker
Brian Hogan
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
Adam Culp
 
Docker and the Container Ecosystem
Docker and the Container EcosystemDocker and the Container Ecosystem
Docker and the Container Ecosystem
psconnolly
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
Jérôme Petazzoni
 
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
Evoke Technologies
 
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
Frank Munz
 
Exploring Docker Security
Exploring Docker SecurityExploring Docker Security
Exploring Docker Security
Patrick Kleindienst
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
Dr. Syed Hassan Amin
 
Using Docker in the Real World
Using Docker in the Real WorldUsing Docker in the Real World
Using Docker in the Real World
Tim Haak
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux ContainerBalaji Rajan
 
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
Patrick Chanezon
 
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGHDeploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Erica Windisch
 
Vagrant and docker
Vagrant and dockerVagrant and docker
Vagrant and docker
DuckDuckGo
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and AgentRanjit Avasarala
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
Geeta Vinnakota
 

What's hot (19)

ABCs of docker
ABCs of dockerABCs of docker
ABCs 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
DockerDocker
Docker
 
Docker
DockerDocker
Docker
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
 
Docker and the Container Ecosystem
Docker and the Container EcosystemDocker and the Container Ecosystem
Docker and the Container Ecosystem
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
 
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 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
 
Exploring Docker Security
Exploring Docker SecurityExploring Docker Security
Exploring Docker Security
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
 
Using Docker in the Real World
Using Docker in the Real WorldUsing Docker in the Real World
Using Docker in the Real World
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
 
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
 
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGHDeploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
 
Vagrant and docker
Vagrant and dockerVagrant and docker
Vagrant and docker
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and Agent
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 

Viewers also liked

Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developers
Chris Tankersley
 
Docker volume
Docker volumeDocker volume
Docker volume
MyoungSu Shin
 
Docker for developers
Docker for developersDocker for developers
Docker for developers
Chris Tankersley
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
Docker, Inc.
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container Security
Phil Estes
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 

Viewers also liked (6)

Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developers
 
Docker volume
Docker volumeDocker volume
Docker volume
 
Docker for developers
Docker for developersDocker for developers
Docker for developers
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container Security
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 

Similar to Introducing Docker

Présentation de Docker
Présentation de DockerPrésentation de Docker
Présentation de Docker
Proto204
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
Ruben Taelman
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
Patrick Chanezon
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
Jian Wu
 
From zero to Docker
From zero to DockerFrom zero to Docker
From zero to Docker
Giovanni Toraldo
 
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
NLJUG
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
Henryk Konsek
 
Docker intro
Docker introDocker intro
Docker intro
Frei Zhang
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Ricardo Amaro
 
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
Guido Schmutz
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Kevin Littlejohn
 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 aug
Vincent De Smet
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Codemotion
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
Carlo Bonamico
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesDelivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devices
Ajeet Singh Raina
 
Docker and containers - Presentation Slides by Priyadarshini Anand
Docker and containers - Presentation Slides by Priyadarshini AnandDocker and containers - Presentation Slides by Priyadarshini Anand
Docker and containers - Presentation Slides by Priyadarshini Anand
PRIYADARSHINI ANAND
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ElasTest Project
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerJim Yeh
 

Similar to Introducing Docker (20)

Présentation de Docker
Présentation de DockerPrésentation de Docker
Présentation de Docker
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
From zero to Docker
From zero to DockerFrom zero to Docker
From zero to Docker
 
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
Gebruik dezelfde Docker container voor Java applicaties tijdens ontwikkelen e...
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Docker intro
Docker introDocker intro
Docker intro
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant
 
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
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
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
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesDelivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devices
 
Docker and containers - Presentation Slides by Priyadarshini Anand
Docker and containers - Presentation Slides by Priyadarshini AnandDocker and containers - Presentation Slides by Priyadarshini Anand
Docker and containers - Presentation Slides by Priyadarshini Anand
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 

Recently uploaded

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 

Recently uploaded (20)

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 

Introducing Docker

  • 2. #Outline 1 Virtualization 2 Containers 3 Docker in practice 4 Docker Compose 5 Continuous integration Virtualization 2/24
  • 3. Thinking about VMM The Key component is the Hypervisor, a Virtual Machine Monitor that can be thought as an API that provides access to the hw level for the VMs. Hosted () abstract guest operating systems from the host one Bare Metal() run directly on the host’s hardware VMware Workstation/Player, VirtualBox and QEMU are examples of hosted hypervisors Virtualization 3/24
  • 4. Deep into Light Virtualization Born on top of LXC project, a set of tools built on a userspace interface for the Linux kernel containment features, LV uses the following kernel features to contain processes: Kernel namespaces (ipc, uts, mount, pid, network and user) Chroots (using pivot root) CGroups (control groups) Relies on your existing system; Services stay in the kernel host; Virtualization 4/24
  • 5. Cgroups Cgroups (abbreviated from control groups) is a Linux kernel feature that limits, accounts for and isolates the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes. Cgroups provides: Resource Limiting: groups can be set to not exceed a configured memory limit Prioritization: some groups may get a larger share of CPU utilization or disk I/O Accounting: measures how much resources certain systems use Control: freezing the groups of processes, their checkpointing and restarting Virtualization 5/24
  • 6. Namespaces Isolation Groups of processes are separated so they cannot ”see” resources in other groups. For example, a PID namespace provides a separate enumeration of process identifiers within each namespace. struct upid { int nr; // the PID value // namespace where this PID is relevant struct pid_namespace *ns; // ... }; struct pid { // number of upids int level; // array of upids struct upid numbers [0]; }; Virtualization 6/24
  • 7. The Layered Filesystem Union file systems, or UnionFS, are file systems that operate by creating layers, making them very lightweight and fast. Copy-On-Write It enables sharing that promotes smaller images Virtualization 7/24
  • 8. #Outline 1 Virtualization 2 Containers 3 Docker in practice 4 Docker Compose 5 Continuous integration Containers 8/24
  • 9. Why Containers? Fast deployment time It’s cheap and flexible Scalability and support Docker as standardized platform Docker is a platform for developing, shipping, and running applications using container virtualization technology. Containers 9/24
  • 11. Docker: Terminology Image: layered filesystem where each layer references the layer below Dockerfile: build script that defines: an existing image as starting point a set of instructions that augment that image (each of which results in another layered filesystem) metadata such as ports exposed the command to executed when the image is run Container: runtime instance of an image plus a read/write layer Docker Hub: centralized repository of docker images Containers 11/24
  • 12. #Outline 1 Virtualization 2 Containers 3 Docker in practice 4 Docker Compose 5 Continuous integration Docker in practice 12/24
  • 13. Quick Start Linux - run natively e.g. on Ubuntu apt-get install docker.io curl -sSL https://get.docker.com/ubuntu — sh Mac / Windows run under VirtualBox http://boot2docker.io Docker Machine - https://github.com/docker/machine docker machine -d virtual-box dev docker machine -d openstack test docker machine -d softlayer ... prod Verify .. $ docker version Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 .. your installation $ docker info Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 Docker in practice 13/24
  • 14. Quick Start Linux - run natively e.g. on Ubuntu apt-get install docker.io curl -sSL https://get.docker.com/ubuntu — sh Mac / Windows run under VirtualBox http://boot2docker.io Docker Machine - https://github.com/docker/machine docker machine -d virtual-box dev docker machine -d openstack test docker machine -d softlayer ... prod Verify .. $ docker version Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 .. your installation $ docker info Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 Docker in practice 13/24
  • 15. Quick Start Linux - run natively e.g. on Ubuntu apt-get install docker.io curl -sSL https://get.docker.com/ubuntu — sh Mac / Windows run under VirtualBox http://boot2docker.io Docker Machine - https://github.com/docker/machine docker machine -d virtual-box dev docker machine -d openstack test docker machine -d softlayer ... prod Verify .. $ docker version Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 .. your installation $ docker info Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 Docker in practice 13/24
  • 16. Quick Start Linux - run natively e.g. on Ubuntu apt-get install docker.io curl -sSL https://get.docker.com/ubuntu — sh Mac / Windows run under VirtualBox http://boot2docker.io Docker Machine - https://github.com/docker/machine docker machine -d virtual-box dev docker machine -d openstack test docker machine -d softlayer ... prod Verify .. $ docker version Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 .. your installation $ docker info Client/Server: Version: 1.9.1 OS/Arch: linux/amd64 Docker in practice 13/24
  • 17. The Docker command line docker search Search for images in the docker hub docker pull Get a selected image from the docker hub docker images List all downloaded images docker run start a container docker ps List running images docker build Build an image from a Dockerfile docker start/stop/kill Containers management docker rm/rmi Remove a container / image Docker in practice 14/24
  • 18. Run your first container $ docker search ubuntu NAME DESCRIPTION STARS OFFICIAL A ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [ ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [ $ docker pull ubuntu:latest latest: Pulling from library/ubuntu 92ec6d044cb3: Downloading 34.57 MB/65.68 MB Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54 Status: Downloaded newer image for ubuntu:latest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB chef-server latest f3cd15749fa8 21 months ago 1.043 GB $ docker run -i -t ubuntu /bin/bash root@e550480534b1:/# apt-get update && apt-get install -y nginx Docker in practice 15/24
  • 19. Run your first container $ docker search ubuntu NAME DESCRIPTION STARS OFFICIAL A ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [ ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [ $ docker pull ubuntu:latest latest: Pulling from library/ubuntu 92ec6d044cb3: Downloading 34.57 MB/65.68 MB Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54 Status: Downloaded newer image for ubuntu:latest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB chef-server latest f3cd15749fa8 21 months ago 1.043 GB $ docker run -i -t ubuntu /bin/bash root@e550480534b1:/# apt-get update && apt-get install -y nginx Docker in practice 15/24
  • 20. Run your first container $ docker search ubuntu NAME DESCRIPTION STARS OFFICIAL A ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [ ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [ $ docker pull ubuntu:latest latest: Pulling from library/ubuntu 92ec6d044cb3: Downloading 34.57 MB/65.68 MB Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54 Status: Downloaded newer image for ubuntu:latest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB chef-server latest f3cd15749fa8 21 months ago 1.043 GB $ docker run -i -t ubuntu /bin/bash root@e550480534b1:/# apt-get update && apt-get install -y nginx Docker in practice 15/24
  • 21. Run your first container $ docker search ubuntu NAME DESCRIPTION STARS OFFICIAL A ubuntu Ubuntu is a Debian-based Linux operating s... 3132 [OK] [ ubuntu-upstart Upstart is an event-based replacement for... 61 [OK] [ $ docker pull ubuntu:latest latest: Pulling from library/ubuntu 92ec6d044cb3: Downloading 34.57 MB/65.68 MB Digest: sha256:457b0587384bdhuis83290....6db5ae3934307c757c54 Status: Downloaded newer image for ubuntu:latest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 6cc0fc2a5ee3 1 minutes ago 187.9 MB chef-server latest f3cd15749fa8 21 months ago 1.043 GB $ docker run -i -t ubuntu /bin/bash root@e550480534b1:/# apt-get update && apt-get install -y nginx Docker in practice 15/24
  • 22. The Dockerfile Dockerfile instruct on how to build the image automatically Dockerfile syntax: FROM RUN ENV EXPOSE ADD CMD $ docker build -t fmount/nginx . $ docker run -d -p 80 –name mystaticwebsite -v $PWD/website:/var/www/html/website fmount/nginx nginx Docker in practice 16/24
  • 23. The Docker Hub It provides a mechanism to share images in the docker-hub, a repository of shareable collection of tagged images $ docker commit/login Exercise: Be Social :D Register in the Docker Hub Connect it to your Github and build Docker in practice 17/24
  • 24. #Outline 1 Virtualization 2 Containers 3 Docker in practice 4 Docker Compose 5 Continuous integration Docker Compose 18/24
  • 25. Get an app running in one command #!/ bin/python from flask import Flask from redis import Redis app = Flask(__name__) redis = Redis(host="localhost" , port =6379) @app.route("/") def hello (): redis.incr("hits") return "I have been seen %s times .n" % redis.get("hits") if __name__ == "__main__": app.run(host="0.0.0.0", debug= True) requirements.txt flask package redis package Docker Compose 19/24
  • 26. Get an app running in one command Steps to follow Write your Dockerfiles Build your containers Prepare your application Think about the infrastructure Compose in a Microservices fashion Build and start the containers $ docker-compose up Docker Compose 20/24
  • 27. #Outline 1 Virtualization 2 Containers 3 Docker in practice 4 Docker Compose 5 Continuous integration Continuous integration 21/24
  • 28. Use case: Continuous Integration Continuous integration 22/24
  • 29. Thank you! Questions? More examples at https://github.com/fmount/containers Continuous integration 23/24
  • 30. References The Docker Book www.dockerbook.com How2dock https://github.com/how2dock/docbook Docker in Action https://www.manning.com/books/docker-in-action Official doc https://docs.docker.com/ SlideShare Docker Channel http://www.slideshare.net/Docker/ Golang tour :D https://tour.golang.org/ Continuous integration 24/24