Building Reusable Development Environments with Docker
-
Upload
raastech -
Category
Technology
-
view
41 -
download
0
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
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
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
Tools
• Docker Machine
• Docker Engine
• Docker Registry
• Docker Compose
CC BY 3.0 US, Harold A. Dost III 13
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
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
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
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
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
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
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