docker for developers

38
Docker for Developers Containerization is the new virtualization James Turnbull @kartar 1

Upload: james-turnbull

Post on 17-Jul-2015

436 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Docker for Developers

Docker for DevelopersContainerization is the new virtualization

James Turnbull@kartar

1

Page 2: Docker for Developers

who• VP of Engineering at Kickstarter

• Advisor at Docker

• Open source chap

• Funny accent

2

Page 3: Docker for Developers

The Docker Book

www.dockerbook.com3

Page 4: Docker for Developers

Who are you folks?

4

Page 5: Docker for Developers

What's this all about?

5

Page 6: Docker for Developers

What is Docker?

6

Page 7: Docker for Developers

Container virtualization

7

Page 8: Docker for Developers

Build, ship, run

8

Page 9: Docker for Developers

Build once

9

Page 10: Docker for Developers

Run in many places

10

Page 11: Docker for Developers

IsolatedLayeredStandard

Content agnostic11

Page 12: Docker for Developers

So why should I care?Software delivery mechanism

PortabilityA bit like a VM but ...

12

Page 13: Docker for Developers

... not like a VM1. Containers boot faster

2. Containers have less overhead

3. Containers bring native performance

4. Containers are Cloud & VM-compatible

13

Page 14: Docker for Developers

Devs care about their app

Ops cares about the containers

14

Page 15: Docker for Developers

Why developers care...

• Clean, safe, hygienic and portable

• No worries about dependencies

• Encourage good architecture

15

Page 16: Docker for Developers

Why operations care...

• Make the lifecycle more efficient

• Eliminate inconsistencies

• Support segregation of duties

16

Page 17: Docker for Developers

What can I use Docker for?

• Docker for CI/CD

• Packaging and deploying applications

• Build your own PAAS

• Deploy applications at hyperscale!

17

Page 18: Docker for Developers

Technology Stack

• Runs on most Linux distributions

• Boot2Docker for OSX and Windows

• Windows in the works!

• Uses Linux kernel features

18

Page 19: Docker for Developers

Docker BasicsImage & Dockerfile

ContainerThe Docker Hub

19

Page 20: Docker for Developers

Building Docker images FROM ubuntu MAINTAINER James Turnbull "[email protected]"

RUN apt-get -qqy update RUN apt-get install -qqy apache2 ADD index.html /var/www/

ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2

VOLUME [ "/var/log/apache2" ] EXPOSE 80

ENTRYPOINT ["/usr/sbin/apache2"] CMD ["-D", "FOREGROUND"]

20

Page 21: Docker for Developers

Building the image$ sudo docker build -t="jamtur01/fluentconf" .

21

Page 22: Docker for Developers

Sharing the image$ sudo docker push jamtur01/fluentconf

22

Page 23: Docker for Developers

Running the container$ sudo docker run --name mywebsite -ti -p 80:80 jamtur01/fluentconf

23

Page 24: Docker for Developers

Docker Hub• Like GitHub but for containers.

• Integrates with GitHub and BitBucket.

• Web hooks for integration with other services.

24

Page 25: Docker for Developers

Workflow• Write awesome code!

• Commit code.

• (Automatically) build Docker images

• Share images

• Profit!

25

Page 26: Docker for Developers

But it's not simple to build a stack

26

Page 27: Docker for Developers

Docker Compose• Fast, isolated development environments using Docker.

• Quick and easy to start.

• Manages a collection of containers.

27

Page 28: Docker for Developers

Installing Compose$ sudo pip install -U docker-compose$ docker-compose --version

28

Page 29: Docker for Developers

Compose basics• Build your apps with Dockerfile's.

• Combine applications and images with a docker-compose.yml file.

29

Page 30: Docker for Developers

The DockerfileFROM ubuntu:14.04RUN apt-get -yqq updateRUN apt-get -yqq install nodejs npmRUN ln -s /usr/bin/nodejs /usr/bin/nodeRUN mkdir -p /var/log/nodeappADD nodeapp /opt/nodeapp/WORKDIR /opt/nodeappRUN npm install

30

Page 31: Docker for Developers

The docker-compose.yml filedb: image: redis ports: - "6379"web: image: jamtur01/fluentdemo command: nodejs server.js ports: - "3000:3000" links: - db

31

Page 32: Docker for Developers

Compose details• Can build images, use existing or pull images

• Can map ports, manage links and create volumes

• Still single host centric.

32

Page 33: Docker for Developers

Start Compose$ sudo docker-compose upCreating compose_db_1...Creating compose_web_1.... . .

33

Page 34: Docker for Developers

Demo

34

Page 35: Docker for Developers

Compose benefits• Build complex local stacks.

• Consistent and shareable.

• No more..

35

Page 36: Docker for Developers

36

Page 37: Docker for Developers

Team and Deployment Workflow• Write awesome code!

• Commit code.

• (Automatically) build Docker images.

• (Automatically) run Jenkins tests.

• Promote images to new environments.

• Profit!

37

Page 38: Docker for Developers

Questions?

38