Docker Fundamentals Jumpstart
Docker Fundamentals Jumpstart
Half-day Tutorial
6/6/2017 1:00 PM
350 Corporate Way, Suite 400, Orange Park, FL 32073
888-- 268-- 8770 ·· 904-- 278-- 0524 - [email protected] - https://www.techwell.com/
Ali Hussain
Flux7
Ali Hussain is CTO and co-founder at Flux7, an IT consulting company and Docker
partner dedicated to designing cutting-edge, scalable, and distributed systems for
innovative businesses. Ali began his career in computer architecture and
performance at ARM and Intel, and has brought this perspective to Flux7, leading
the company's research and development efforts. A highly accredited Amazon
Web Services technologist with Docker certification, Ali focuses on integrating
Docker technology into business solutions that improve operations,
development, and business productivity. Ali can be found on Twitter
@Ali_A_Hussain, via LinkedIn, or the Flux7 blog.
5/1/2017
June 6, 2017
About Flux7
Achievements
AWS DevOps, Migration, Healthcare, and Life
Sciences Competencies
1
5/1/2017
Outcomes
What is Docker?
Plan
✓Docker Concepts
✓Summary
2
5/1/2017
Docker Concepts
Releasing Technology
Server
Infrastructure Code
Configurations
Security Rules
3
5/1/2017
Accelerating Releases
Startups: Enterprises:
4
5/1/2017
Why?
Why?
Options: Implement the above using an array of tools, or simply consider Docker
5
5/1/2017
What is Docker?
Docker’s attraction
Lightweight Hardware
Portable
Agnostic
6
5/1/2017
Helps with
Ineffective code pipeline management
7
5/1/2017
8
5/1/2017
Docker Accelerates …
Developers: Operations: Information Security:
End-to-end ownership of Application agnostic Immutable environments
application and configuration requirements, i.e., just need
to run containers robustly Smaller and more
Control networking and
consistent perimeter
provisioning
Automated analysis at
An easy path to request
build time
infrastructure
9
5/1/2017
Rent-A-Center
Business Challenge
10
5/1/2017
11
5/1/2017
Security is extended by making sensitive configuration data available based on re:Invent 2015
role, while ensuring development meets security processes and controls. APN Summit
Cars.com (auto.com)
Business Challenge
12
5/1/2017
Cars.com (auto.com)
Outcome
High fidelity and confidence in Dev and QA leading to faster The service from Flux7
and communication has
iteration of product
been the ‘Best in Class’
13
5/1/2017
Project: cars.com
Laptop
App Code
and Logs
Project: cars.com
Laptop
14
5/1/2017
Project: cars.com
Laptop
Web App
DB Redis
Mem Log
$ Stash
Project: cars.com
Laptop
Web App
DB Redis
Mem Log
$ Stash
15
5/1/2017
Project: cars.com
Laptop
DB Redis
Mem Log
SSH
$ Stash
Project: cars.com
Laptop
DB Redis
Mem Log
SSH
$ Stash
16
5/1/2017
Project: cars.com
Laptop
Mem Log
SSH
$ Stash
Management
● Less conflict
● Faster time to market
Ops ● Happier engineers
Easier hiring
Only one standardized dev
●
environment to support
Backend Developers
Front-end HTML Devs
● Homogenous environment
● Quick visual feedback with
● Quick feedback populated data
● Agile: break it fearlessly ● Avoid installations
17
5/1/2017
Other Stories
Fugro OARS
Video from DockerCon 2016: https://www.youtube.com/watch?v=S7B-pEDoSeE
Pristine
Video from AWS Re:invent 2014:
https://www.youtube.com/watch?v=ktKzSuD9InM
Workshop
18
5/1/2017
Taxonomy: Nouns
Taxonomy: Verbs
Attach Delete
Connect to a running container Delete a container
19
5/1/2017
Taxonomy: Verbs
Create an image from a running Push an image to a repository Pull an image from a
container repository
Taxonomy: Adjectives
20
5/1/2017
Execution Environment
Containers
Docker engine
The Container
21
5/1/2017
Docker Commands
docker pull Pull a pre-built image from the public repos
22
5/1/2017
Docker Commands
Docker Commands
23
5/1/2017
Dockerfile
INSTRUCTION argument
Dockerfile Commands
CMD["executable","param1
","param2"]
Provides defaults for an executing container
24
5/1/2017
Dockerfile Commands
ENTRYPOINT
[‘executable’, Configure a container as an executable
‘param1’,’param2’]
docker-compose.yml
25
5/1/2017
Hands On
1. Install Docker
Visit
https://www.katacoda.com/flux7/scenarios/l
ab
Code: https://github.com/Flux7Labs/docker-hands-on-lab
Summary
26
5/1/2017
Develop docker-compose.yml files for your entire stack, i.e., app, DB, etc
Registry
metadata
27
5/1/2017
✓ Third party tools: AWS Tools (BeanStalk, EC2 Container Service) and HashiCorp
tools (Nomad, Consul, and Vault)
Summary
■ Docker is emerging as a key component of future code pipelines
■ Docker accelerates the entire flow: Dev, QA, Ops, and InfoSec
28
5/1/2017
Docker in Production
29
5/1/2017
Arch Diagram
NAT
Gate
way Consul
Details of Clusters
Svc 1 Svc 2 Svc 3
Cluster 1
30
5/1/2017
Microservices - Components
Context-based
Orchestration Service Discovery Load Balancing
routing
Microservices - Components
Context-based
Orchestration Service Discovery Load Balancing
routing
ECS
ELB
31
5/1/2017
Code Deploy
New service:
1. Create new repo
2. Add service to Jenkins
3. Create new Docker registry
4. Push code, the above workflow
code/config runs as-is
metadata
Service Discovery
Add demo-service Typical ECS Node
Docker
Daemon
1
3
2
Container A Events
Registrator Container name/tags
Consul agent
Consul
Nginx 7
Template
6
Nginx.
https://myurl/demo-service New container added for service X
conf
32