Building Reusable Development Environments with Docker

47
Building Reusable Development Environments with Docker Harold Dost Raastech, Inc. CC BY 3.0 US, Harold A. Dost III 1

Transcript of Building Reusable Development Environments with Docker

Building Reusable Development Environments with Docker

Harold DostRaastech, Inc.

CC BY 3.0 US, Harold A. Dost III 1

About the Speaker

Work For Raastech, Inc. - Virginia/DC Area 1

1 Image source: https://upload.wikimedia.org/wikipedia/commons/d/d2/USNavy030926-F-2828D-307AerialviewoftheWashingtonMonument.jpg

CC BY 3.0 US, Harold A. Dost III 2

Live in Michigan2

• Detroit Metro Area

2 Images Source: Wikipedia

CC BY 3.0 US, Harold A. Dost III 3

Core Java

CC BY 3.0 US, Harold A. Dost III 4

Shameless Plug

• For SOA Administration

• Buy From Packt Website

• Promo Code for 50% off: UKOUG50

• Valid until Dec 15, 2016

CC BY 3.0 US, Harold A. Dost III 5

Lately

• Primarily working as Lead QA for Client creating IoT devices

• Part of the Release team

CC BY 3.0 US, Harold A. Dost III 6

Typical Steps1.Setup Database

2.Create Schemas

3.Setup Server

4.Deploy Application

CC BY 3.0 US, Harold A. Dost III 7

Basic Java App[Kinda] Demo

CC BY 3.0 US, Harold A. Dost III 8

Code Quality 3

3 Image Source: http://xkcd.com/1695/

CC BY 3.0 US, Harold A. Dost III 9

Consistency 4

• Vagrant

• Chef

• Puppet

• Ansible

4 Image Source: https://www.flickr.com/photos/cadsonline/889810973

CC BY 3.0 US, Harold A. Dost III 10

DockerCC BY 3.0 US, Harold A. Dost III 11

DockerEcosystemCC BY 3.0 US, Harold A. Dost III 12

Tools

• Docker Machine

• Docker Engine

• Docker Registry

• Docker Compose

CC BY 3.0 US, Harold A. Dost III 13

Using Docker Machine

CC BY 3.0 US, Harold A. Dost III 14

Docker Machine• This aids in creating docker hosts

• The target of these can be:

• Cloud Providers

• AWS

• Digital Ocean

• Google Cloud Platform

CC BY 3.0 US, Harold A. Dost III 15

Docker Machine cont.• Other VM Targets

• OpenStack

• Oracle VirtualBox

• VMware Fusion®

• vCloud® Air™

• vSphere®

CC BY 3.0 US, Harold A. Dost III 16

Docker MachineCreates a dummy machine

docker-machine create --driver virtualbox default

CC BY 3.0 US, Harold A. Dost III 17

Docker Engine

• Basis of Eco-system

• Mediate between containers and host

CC BY 3.0 US, Harold A. Dost III 18

Benefits

• Lightweight

• Walled off from other process

• Repeatable

CC BY 3.0 US, Harold A. Dost III 19

Definitions• Images

• VM

• Docker

• Container

CC BY 3.0 US, Harold A. Dost III 20

How does Docker work?

• LXC -> libcontainer5

• Control Groups: Limit Resources of Process Groups

• Kernel Namespaces: Isolates resources

5 http://www.zdnet.com/article/docker-libcontainer-unifies-linux-container-powers/

CC BY 3.0 US, Harold A. Dost III 21

Difference between Containers and VMs 6

6 Image Source: http://www.docker.com/what-docker

CC BY 3.0 US, Harold A. Dost III 22

Limitations - Linux• Linux Kernel Based OS (Ubuntu, CentOS, Arch,

Etc.)

• Minimum of Kernel 3.10

CC BY 3.0 US, Harold A. Dost III 23

Limitations - Windows Host

• Microsoft Windows Server 2016

CC BY 3.0 US, Harold A. Dost III 24

Windows Specific Containers• Windows Server Containers

• Hyper-V Containers

CC BY 3.0 US, Harold A. Dost III 25

Dockerfile 7

FROM java:8RUN apt-get updateRUN apt-get install -y maven nodejsEXPOSE 9000WORKDIR /appCOPY app /appRUN chown -R appuser /appUSER appuserENTRYPOINT mvn spring-boot:run

7 For more information about the Dockerfile format check here.

CC BY 3.0 US, Harold A. Dost III 26

Using Docker Engine• 39 Different commands

• Only covering some of the most used

CC BY 3.0 US, Harold A. Dost III 27

Commands: Retrievepull - Pull an image or a repository from a registry

CC BY 3.0 US, Harold A. Dost III 28

Commands: Create and Deletecreate - Create a new containerrm - Remove one or more containersrmi - Remove one or more images

CC BY 3.0 US, Harold A. Dost III 29

Demo Commands

CC BY 3.0 US, Harold A. Dost III 30

Commands: Start and Stopstart - Start 1+ stopped containersstop - Stop a running containerexec - Run command in running containerrun - Run command in new containerkill - Kill a running containerrestart - Restart a running container

CC BY 3.0 US, Harold A. Dost III 31

Windows Caveat• To enable hyper-v at runtime --isolation=hyperv

CC BY 3.0 US, Harold A. Dost III 32

MAVEN Plugins• https://github.com/spotify/docker-maven-plugin

• https://github.com/rhuss/docker-maven-plugin

• https://github.com/wouterd/docker-maven-plugin

CC BY 3.0 US, Harold A. Dost III 33

Quick Maven Demo

CC BY 3.0 US, Harold A. Dost III 34

Commands: Organizerename - Rename a containertag - Tag an image into a repositorycommit - Create a new image from a container's changes

CC BY 3.0 US, Harold A. Dost III 35

Commands: Etc.cp - Copy files to and from containersport - List port mappingsps - List containersattach - Attach to a running container

CC BY 3.0 US, Harold A. Dost III 36

Docker Registry• Place to Store your images

• Can run in a container also

CC BY 3.0 US, Harold A. Dost III 37

Docker Compose• Create Multi-container Applications

• Example:

• Java App

• Database

CC BY 3.0 US, Harold A. Dost III 38

Docker Compose• Uses decriptor file compose.yml

• Brings up an application

CC BY 3.0 US, Harold A. Dost III 39

Docker Compose Commandsbuild - Build or rebuild serviceskill - Kill containersup - Create and start containersmigrate-to-labels - Recreate containers to add labels

version - Show the Docker-Compose version information

CC BY 3.0 US, Harold A. Dost III 40

The docker-compose.yml 8

web:

build: .

links:

- db

ports:

- "8000:8000"

db:

image: postgres

8 For more information about file arguments check here.

CC BY 3.0 US, Harold A. Dost III 41

Demo docker-compose

CC BY 3.0 US, Harold A. Dost III 42

Docker on Windows• https://msdn.microsoft.com/en-us/

virtualization/windowscontainers/deployment/docker_windows

Resources• https://msdn.microsoft.com/en-us/

virtualization/windowscontainers/deployment/

CC BY 3.0 US, Harold A. Dost III 43

Project 9

• https://github.com/hdost/docker-presentation

9 Image Source: http://xkcd.com/1597/

CC BY 3.0 US, Harold A. Dost III 44

Questions?

CC BY 3.0 US, Harold A. Dost III 45

Contact• Harold Dost

• @hdost

[email protected]

CC BY 3.0 US, Harold A. Dost III 46

CC BY 3.0 US, Harold A. Dost III 47