SlideShare a Scribd company logo
1 of 30
Download to read offline
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

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 — SCALE12XJérôme Petazzoni
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in developmentAdam Culp
 
Docker and the Container Ecosystem
Docker and the Container EcosystemDocker and the Container Ecosystem
Docker and the Container Ecosystempsconnolly
 
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 AzureJé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 ComposeEvoke 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 OCCSFrank Munz
 
Using Docker in the Real World
Using Docker in the Real WorldUsing Docker in the Real World
Using Docker in the Real WorldTim 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 AzurePatrick 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) - DevopsDaysPGHErica Windisch
 
Vagrant and docker
Vagrant and dockerVagrant and docker
Vagrant and dockerDuckDuckGo
 
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 DockerGeeta 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

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 SecurityPhil 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: A Guide to Containers and Docker Compose

Présentation de Docker
Présentation de DockerPrésentation de Docker
Présentation de DockerProto204
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to DockerJian Wu
 
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 mortalsHenryk Konsek
 
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 ContainerGuido Schmutz
 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 augVincent 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-2014Carlo Bonamico
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman 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 devicesAjeet 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 AnandPRIYADARSHINI 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 JenkinsElasTest Project
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerJim Yeh
 

Similar to Introducing Docker: A Guide to Containers and Docker Compose (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

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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.jsAndolasoft Inc
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
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 GoalsJhone kinadey
 
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 WorkerThousandEyes
 
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...MyIntelliSource, Inc.
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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 CCTVshikhaohhpro
 
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 ...OnePlan Solutions
 
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.pdfkalichargn70th171
 
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.docxComplianceQuest1
 
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 serviceanilsa9823
 
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.comFatema Valibhai
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
+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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
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 ...MyIntelliSource, Inc.
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
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
 
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
 
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
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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
 
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 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
 
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
 
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
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
+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...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
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 ...
 

Introducing Docker: A Guide to Containers and Docker Compose

  • 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