The document discusses Docker, an open-source project that allows users to create lightweight isolated containers. It describes how Docker uses namespaces and cgroups to provide isolation and resource management. It also provides an overview of getting started with Docker by installing it, running sample containers, and building Dockerfiles. The benefits of Docker for development workflows are presented, focusing on portability and treating infrastructure as code.
1 of 40
More Related Content
Introduction to Docker and Linux Containers @ Cloud Computing Rhein Main
6. Installation
My Mac Timos
Linux
Test Staging Cloud VM Bare Metal
Rails Web
Frontend
? ? ? ? ? ?
Node.js
API
? ? ? ? ? ?
Background
jobs
? ? ? ? ? ?
MySQL ? ? ? ? ? ?
Distributed
DB
? ? ? ? ? ?
Message
Queue
? ? ? ? ? ?
7. Reusable Containers
My Mac Timos
Linux
Test Staging Cloud VM Bare Metal
Rails Web
Frontend
Node.js
API
Background
jobs
MySQL
Distributed
DB
Message
Queue
9. Dev DevOps - Separation of
Concerns
Dev: Inside the
container
my code
my libraries
my package
manager
my app
my data
Ops: Outside the
container
Logging
Remote Access
Network
Configuration
Monitoring
12. Based on existing technologies
Namespaces
> Varying views on the system
> to provide isolated environments
> PID, NET, IPC, MNT, UTS, User
CGroups
> control resources for a group of processes
> like CPU time, Memory, Network bandwidth, etc.
Layered FS
(LXC)
15. Docker History
Jan 2013: Initial commit
September 2013: Redhat announces
collaboration
June 2014: Google announces engagement
August 2014: VMWare announces Docker support
February 2015: Microsoft announces Docker
support
April 2015: Docker raises $95 Million
June 2015: Open Container Project announced
21. Run Containers
# run a command
$ docker run busybox echo hello
# run an interactive shell
$ docker run -i -t busybox /bin/sh
# run a Redis cache
$ docker run -d redis
24. Build, Push, and Run
# build the image
$ docker build -t puja108/node .
# push it to the registry
$ docker push puja108/node
# run it (on any host)
$ docker run -d puja108/node
27. Vagrant
rbenv
nodeenv
virtualenv
Laptop full of build tools and servers
Your current setup?
28. Contains Build Tools
Can also be a separate container
One (or more) container(s) for each stack
Use Docker Compose
Runs the same regardless on which host or
in which environment
Lightweight
Developer can actually have several environments
open directly on her laptop
Dev Containers
33. Microservice Architectures
> Simple focussed services
> Highly decoupled
> Communicate over lightweight mechanisms
> HTTP APIs & Message Queues
> Polyglot (Language, Framework, Data Store)
> Built to fail
Immutable Infrastructures
> Disposable components
> Make your state explicit
> Configure at run-time
The Next Steps in Cloud Architecture
34. Containers vs. VMs
Container
Lightweight layers
above a shared
kernel
Single service or
process
New but promising
technology
Enable #GIFEE
VM
Complete (heavy)
Virtual System
Application(s) with
several components
Tried and trusted
Technology
39. Namespaces
The pid namespace: Used for process isolation (PID:
Process ID).
The net namespace: Used for managing network
interfaces (NET: Networking).
The ipc namespace: Used for managing access to IPC
resources (IPC: InterProcess Communication).
The mnt namespace: Used for managing mount-points
(MNT: Mount).
The uts namespace: Used for isolating kernel and version
identifiers. (UTS: Unix Timesharing System).
40. CGroups
Control group of processes.
Share available hardware resources.
Set up limits and constraints.
E.g. limiting the memory available to a
specific container.