SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Docker 101 
Intro to Docker 
Presented by: Adrian Otto 
Prepared for: Docker Los Angeles 
Date: August 20, 2014
Adrian Otto 
• Principal Architect, Rackspace 
• PTL, Solum 
• Chair, OpenStack Containers Team 
• Co-Chair, OASIS CAMP Technical Committee 
2
3
What is it? 
• Docker Engine 
– CLI 
– Docker Daemon 
– Docker Registry 
• Docker Hub 
– Cloud service 
• Share Applications 
• Automate workflows 
• Assemble apps from components 
4
5
Cgroups Namespaces Image Docker 
Container 
Container 
• Combines several things 
– Linux Cgroups 
– Kernel Namespaces 
– Docker Image 
– Has a lifecycle 
6
Linux Cgroups 
• Kernel Feature 
• Groups of processes 
• Control resource allocations 
– CPU 
– Memory 
– Disk 
– I/O 
• May be nested 
7
Linux Kernel Namespaces 
• Kernel Feature 
• Restrict your view of the system 
– Mounts (CLONE_NEWNS) 
– UTS (CLONE_NEWUTS) 
• uname() output 
– IPC (CLONE_NEWIPC) 
– PID (CLONE_NEWPID) 
– Networks (CLONE_NEWNET) 
– User (CLONE_NEWUSER) 
• Not supported in Docker yet 
• Has privileged/unprivileged modes today 
• May be nested 
8
Docker Image 
9 
Base Image 
Child Image 
Grandchild Image 
• NOT A FILESYSTEM 
• NOT A VHD 
• Basically a tar file 
• Has a hierarchy 
• Arbitrary depth 
• Fits into the Docker Registry
Docker Registry 
10 
Base Image 
Child Image 
Grandchild Image 
• Git Repo Symantics 
• Pull 
• Push 
• Commit 
• Hierarchy
Cgroups Namespaces Image Docker 
Container 
Container 
• Combines several things 
– Linux Cgroups 
– Kernel Namespaces 
– Docker Image 
– Has a lifecycle 
11
Dockerfile Base 
Image 
Docker 
Container 
Dockerfile 
• Like a Makefile (shell script with keywords) 
• Extends from a Base Image 
• Results in a new Docker Image 
• Imperitave, not Declarative 
12
Dockerfile Example 
FROM centos 
MAINTAINER aotto@aotto.com 
RUN yum -y install openssh-server 
EXPOSE 22 
ADD start.sh /start.sh 
CMD /start.sh 
13
Dockerfile Example 
FROM adrian_server_with_ssh 
MAINTAINER aotto@aotto.com 
RUN yum -y install httpd 
EXPOSE 22 80 
ADD start.sh /start.sh 
CMD /start.sh 
14
Docker Container Lifecycle 
• The Life of a Container 
– Conception 
• BUILD an Image from a Dockerfile 
– Birth 
• RUN (create+start) a container 
– Reproduction 
• COMMIT (persist) a container to a new image 
• RUN a new container from an image 
– Sleep 
• KILL a running container 
– Wake 
• START a stopped container 
– Death 
• RM (delete) a stopped container 
• Extinction 
– RMI a container image (delete image) 
15
Docker CLI Commands (v1.1.2) 
attach Attach to a running container! 
build Build an image from a Dockerfile! 
commit Create new image from container's changes! 
cp Copy files from containers fs to host! 
diff Inspect changes on a container's fs! 
events Get real time events from the server! 
export Stream contents of container as tar! 
history Show the history of an image! 
images List images! 
import Create new fs image from a tarball! 
info Display system-wide information! 
inspect Return low-level info on a container! 
kill Kill a running container! 
load Load an image from a tar archive! 
login Login to the docker registry server! 
logs Fetch the logs of a container! 
port Lookup public-facing port! 
pause Pause all processes within a container! 
ps List containers! 
pull Pull image or repo from docker registry ! 
push Push image or repo to docker registry! 
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! 
save Save an image to a tar archive! 
search Search for an image in the docker index! 
start Start a stopped container! 
stop Stop a running container! 
tag Tag an image into a repository! 
top Lookup running processes of a container! 
unpause Unpause a paused container! 
version Show the docker version information! 
wait Block and print exit code upon cont exit! 
16
17 
Questions Before Demo?
18 
Demo
Demo 
• Build an Image from a Dockerfile 
• Manually tweak an image, commit, and start a new container 
• Install patches in a container, and tag it as :latest 
• Show different distros running on the same kernel 
• Run a container using a different CMD than the built-in one 
19
20

Contenu connexe

Tendances

Tendances (20)

Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 
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 introduction
Docker introductionDocker introduction
Docker introduction
 
Docker intro
Docker introDocker intro
Docker intro
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
 
Dockerizing your applications - Docker workshop @Twitter
Dockerizing your applications - Docker workshop @TwitterDockerizing your applications - Docker workshop @Twitter
Dockerizing your applications - Docker workshop @Twitter
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An Introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Docker
DockerDocker
Docker
 
Containerization and Docker
Containerization and DockerContainerization and Docker
Containerization and Docker
 
Docker Introductory workshop
Docker Introductory workshopDocker Introductory workshop
Docker Introductory workshop
 

Similaire à Docker 101 - Intro to Docker

Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1
Docker, Inc.
 

Similaire à Docker 101 - Intro to Docker (20)

Using Docker with OpenStack - Hands On!
 Using Docker with OpenStack - Hands On! Using Docker with OpenStack - Hands On!
Using Docker with OpenStack - Hands On!
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
presentation on Docker
presentation on Dockerpresentation on Docker
presentation on 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
 
Tech talk on docker with demo
Tech talk on docker with demoTech talk on docker with demo
Tech talk on docker with demo
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
 
Java developer intro to environment management with vagrant puppet and docker
Java developer intro to environment management with vagrant puppet and dockerJava developer intro to environment management with vagrant puppet and docker
Java developer intro to environment management with vagrant puppet and docker
 
Docker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupDocker presentation | Paris Docker Meetup
Docker presentation | Paris Docker Meetup
 
Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1
 
Virtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesVirtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management services
 
Docker.ppt
Docker.pptDocker.ppt
Docker.ppt
 
Docker 101 Workshop slides (JavaOne 2017)
Docker 101 Workshop slides (JavaOne 2017)Docker 101 Workshop slides (JavaOne 2017)
Docker 101 Workshop slides (JavaOne 2017)
 
aws 2023 nov docker.pptx
aws 2023 nov docker.pptxaws 2023 nov docker.pptx
aws 2023 nov docker.pptx
 
Introduction to automated environment management with Docker Containers - for...
Introduction to automated environment management with Docker Containers - for...Introduction to automated environment management with Docker Containers - for...
Introduction to automated environment management with Docker Containers - for...
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Django and Docker
Django and DockerDjango and Docker
Django and Docker
 

Plus de Adrian Otto

Plus de Adrian Otto (8)

What's really the difference between a VM and a Container?
What's really the difference between a VM and a Container?What's really the difference between a VM and a Container?
What's really the difference between a VM and a Container?
 
What's really the difference between a VM and a Container?
What's really the difference between a VM and a Container?What's really the difference between a VM and a Container?
What's really the difference between a VM and a Container?
 
Build Your Own Open Source Cloud
Build Your Own Open Source CloudBuild Your Own Open Source Cloud
Build Your Own Open Source Cloud
 
OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04
 
OpenStack Magnum
OpenStack MagnumOpenStack Magnum
OpenStack Magnum
 
Magnum first-class-resource
Magnum first-class-resourceMagnum first-class-resource
Magnum first-class-resource
 
7 Habits of Highly Effective Contirbutors
7 Habits of Highly Effective Contirbutors7 Habits of Highly Effective Contirbutors
7 Habits of Highly Effective Contirbutors
 
Docker for Multi-Cloud Apps
Docker for Multi-Cloud AppsDocker for Multi-Cloud Apps
Docker for Multi-Cloud Apps
 

Dernier

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

Docker 101 - Intro to Docker

  • 1. Docker 101 Intro to Docker Presented by: Adrian Otto Prepared for: Docker Los Angeles Date: August 20, 2014
  • 2. Adrian Otto • Principal Architect, Rackspace • PTL, Solum • Chair, OpenStack Containers Team • Co-Chair, OASIS CAMP Technical Committee 2
  • 3. 3
  • 4. What is it? • Docker Engine – CLI – Docker Daemon – Docker Registry • Docker Hub – Cloud service • Share Applications • Automate workflows • Assemble apps from components 4
  • 5. 5
  • 6. Cgroups Namespaces Image Docker Container Container • Combines several things – Linux Cgroups – Kernel Namespaces – Docker Image – Has a lifecycle 6
  • 7. Linux Cgroups • Kernel Feature • Groups of processes • Control resource allocations – CPU – Memory – Disk – I/O • May be nested 7
  • 8. Linux Kernel Namespaces • Kernel Feature • Restrict your view of the system – Mounts (CLONE_NEWNS) – UTS (CLONE_NEWUTS) • uname() output – IPC (CLONE_NEWIPC) – PID (CLONE_NEWPID) – Networks (CLONE_NEWNET) – User (CLONE_NEWUSER) • Not supported in Docker yet • Has privileged/unprivileged modes today • May be nested 8
  • 9. Docker Image 9 Base Image Child Image Grandchild Image • NOT A FILESYSTEM • NOT A VHD • Basically a tar file • Has a hierarchy • Arbitrary depth • Fits into the Docker Registry
  • 10. Docker Registry 10 Base Image Child Image Grandchild Image • Git Repo Symantics • Pull • Push • Commit • Hierarchy
  • 11. Cgroups Namespaces Image Docker Container Container • Combines several things – Linux Cgroups – Kernel Namespaces – Docker Image – Has a lifecycle 11
  • 12. Dockerfile Base Image Docker Container Dockerfile • Like a Makefile (shell script with keywords) • Extends from a Base Image • Results in a new Docker Image • Imperitave, not Declarative 12
  • 13. Dockerfile Example FROM centos MAINTAINER aotto@aotto.com RUN yum -y install openssh-server EXPOSE 22 ADD start.sh /start.sh CMD /start.sh 13
  • 14. Dockerfile Example FROM adrian_server_with_ssh MAINTAINER aotto@aotto.com RUN yum -y install httpd EXPOSE 22 80 ADD start.sh /start.sh CMD /start.sh 14
  • 15. Docker Container Lifecycle • The Life of a Container – Conception • BUILD an Image from a Dockerfile – Birth • RUN (create+start) a container – Reproduction • COMMIT (persist) a container to a new image • RUN a new container from an image – Sleep • KILL a running container – Wake • START a stopped container – Death • RM (delete) a stopped container • Extinction – RMI a container image (delete image) 15
  • 16. Docker CLI Commands (v1.1.2) attach Attach to a running container! build Build an image from a Dockerfile! commit Create new image from container's changes! cp Copy files from containers fs to host! diff Inspect changes on a container's fs! events Get real time events from the server! export Stream contents of container as tar! history Show the history of an image! images List images! import Create new fs image from a tarball! info Display system-wide information! inspect Return low-level info on a container! kill Kill a running container! load Load an image from a tar archive! login Login to the docker registry server! logs Fetch the logs of a container! port Lookup public-facing port! pause Pause all processes within a container! ps List containers! pull Pull image or repo from docker registry ! push Push image or repo to docker registry! 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! save Save an image to a tar archive! search Search for an image in the docker index! start Start a stopped container! stop Stop a running container! tag Tag an image into a repository! top Lookup running processes of a container! unpause Unpause a paused container! version Show the docker version information! wait Block and print exit code upon cont exit! 16
  • 19. Demo • Build an Image from a Dockerfile • Manually tweak an image, commit, and start a new container • Install patches in a container, and tag it as :latest • Show different distros running on the same kernel • Run a container using a different CMD than the built-in one 19
  • 20. 20