an introduction to docker and project atomic

16
An Introduction to Docker and Project Atomic Aditya Patawari Contributor to Fedora Admin team Lead Engineer (Infrastructure) at BrowserStack.com [email protected] adimania on freenode irc http://blog.adityapatawari.com November 15, 2014 Aditya Patawari An Introduction to Docker and Project Atomic

Upload: aditya-patawari

Post on 28-Jun-2015

951 views

Category:

Technology


5 download

DESCRIPTION

Slides from my workshop at the Centos Dojo 2014, Bangalore. This workshop focused on getting started with Docker with an introduction to Project Atomic. We discussed why Docker can be a better choice than Linux containers and virtual machines in many scenarios. We also discussed rpm-ostree and its advantages followed by running a CentOS Atomic host feeding it cloud-init data. A took a short ride to cockpit project for managing Atomic hosts and containers. We created custom docker images from CentOS image which can be shipped anywhere via docker repositories.

TRANSCRIPT

Page 1: An introduction to Docker and Project Atomic

An Introduction to Docker and Project Atomic

Aditya Patawari

Contributor to Fedora Admin team

Lead Engineer (Infrastructure) at BrowserStack.com

[email protected]

adimania on freenode irc

http://blog.adityapatawari.com

November 15, 2014

Aditya Patawari An Introduction to Docker and Project Atomic

Page 2: An introduction to Docker and Project Atomic

Topics

What is Docker?

Why not LXC or VM?

Project Atomic is here!

.. Along with rpm-ostree ..

.. and Systemd

Starting our Atomic Host

Docker Commands

Docker Repository

Aditya Patawari An Introduction to Docker and Project Atomic

Page 3: An introduction to Docker and Project Atomic

What is the problem?

My production needs to be homogeneous

I need to ship entire environment to my colleague

My hypervisor ate all the CPU (or RAM)

Classic problem ”.. but it works on my machine .. ”

Aditya Patawari An Introduction to Docker and Project Atomic

Page 4: An introduction to Docker and Project Atomic

What is Docker?

LXC turbo charged

Kernel Cgroups and Namespace implementation

Using Device Mapper Thin Provionsing

Portable. Registries are awesome!

Aditya Patawari An Introduction to Docker and Project Atomic

Page 5: An introduction to Docker and Project Atomic

Why Docker?

Lightweight linux container

Boots up in seconds

Incrementally build, revert and reuse your container

API to manage things remotely

Aditya Patawari An Introduction to Docker and Project Atomic

Page 6: An introduction to Docker and Project Atomic

Why not LXC containers or VM?

Less resource consuming than virtual machinesFaster than VM with reasonable amount of isolation.According to a benchmark by Boden Russell, IBM (approxfigures):

CPU usage 20 % vs 70 %Memory usage 50 MB vs 300 MB

Better tools ecosystem around docker than LXC

Case study of Spotify

Aditya Patawari An Introduction to Docker and Project Atomic

Page 7: An introduction to Docker and Project Atomic

Project Atomic is here!

Minimal operating system

Benefits of our favorite Enterprise Linux

Robust atomic upgrades and systemd

Ready to take on cloud, virtualized or bare metal

Aditya Patawari An Introduction to Docker and Project Atomic

Page 8: An introduction to Docker and Project Atomic

.. including rpm-ostree ..

Bootable, immutable, versioned filesystem trees

Composed from standard rpms

Atomic upgrade and rollbacks

Only /etc and /var are writable

Aditya Patawari An Introduction to Docker and Project Atomic

Page 9: An introduction to Docker and Project Atomic

.. and Systemd

System and service manager for Linux

Replacing the init in Centos 7

Highly modular and much more powerful than sysV

Check out http://0pointer.de/blog/projects/why.html

Aditya Patawari An Introduction to Docker and Project Atomic

Page 10: An introduction to Docker and Project Atomic

Starting Atomic Host

Atomic host needs cloud-init data

Info about the host, i.e. meta-data

Info about the user, i.e. user-data

Aditya Patawari An Introduction to Docker and Project Atomic

Page 11: An introduction to Docker and Project Atomic

cloud-init data

$ cat meta-data

instance-id: iid-local01;

local-hostname: myhost;

$ cat user-data

#cloud-config

password: mypassword

ssh_pwauth: True

chpasswd: { expire: False }

ssh_authorized_keys:

- ssh-rsa ... [email protected]

$ genisoimage -output init.iso -volid cidata -joliet \

-rock user-data meta-data

Aditya Patawari An Introduction to Docker and Project Atomic

Page 12: An introduction to Docker and Project Atomic

Let’s try this out!

yum install docker-io

systemctl start docker

docker pull adimania/fedora-busybox

docker run -i -t adimania/fedora-busybox /sbin/sh

docker ps

docker images

docker commit <container><tag>

docker stop

Aditya Patawari An Introduction to Docker and Project Atomic

Page 13: An introduction to Docker and Project Atomic

Dockerfile

FROM centos

MAINTAINER Aditya Patawari <[email protected]>

RUN yum -y update

RUN yum -y install httpd

EXPOSE 80

CMD [ "httpd" ]

Aditya Patawari An Introduction to Docker and Project Atomic

Page 14: An introduction to Docker and Project Atomic

Docker build

$ docker build .

.

.

.

---> a8d3d615599a

Removing intermediate container cc142bec3471

Step 4 : EXPOSE 6379

---> Running in 3aaa20ddda02

---> 3bef54fa4135

Removing intermediate container 3aaa20ddda02

Step 5 : CMD [ "redis-server" ]

---> Running in eef0cb48742a

---> 4f09b11a3dd2

Removing intermediate container eef0cb48742a

Successfully built 4f09b11a3dd2

Aditya Patawari An Introduction to Docker and Project Atomic

Page 15: An introduction to Docker and Project Atomic

Download only official or trusted images

You’re still on your own on security updates

An attack on non-namespaced subsystem or device is apotential risk

Aditya Patawari An Introduction to Docker and Project Atomic

Page 16: An introduction to Docker and Project Atomic

Questions?

Now is your chance :)

Aditya Patawari An Introduction to Docker and Project Atomic