Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
-
Upload
eric-windisch -
Category
Technology
-
view
448 -
download
4
description
Transcript of Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
![Page 1: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/1.jpg)
![Page 2: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/2.jpg)
19 Months Later: An Incredible Platform and Ecosystem
Official Repos & 14K+ Dockerized Apps
Community 640+ Contributors 250+ Meetups on Docker 2.75M Downloads 6.7K Projects on GitHub
Support Enterprise Support Robust Documentation Implementation, Integration, Training Network of Partners
The Docker Platform ! Docker Engine
Docker Hub !Build, Ship, and Run
Partners
Content
Users
![Page 3: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/3.jpg)
60+ People and a Turtle
Now up to 60+ people (and our pet turtle, Gordon)
![Page 4: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/4.jpg)
…to Build, Ship, and Run
Build Ship
Run
Dev
QA
Source
Staging
Physical
Virtual
Cloud
Infrastructure Management
Infrastructure Management
DockerFile
Source Code Repository
TESTTEST
TESTTEST
TEST
GCE RAX IBM
Mac/Win Dev Machine
Boot2Docker
Doc
ker
Analytics DB
Prod Machine
Linux OS
Doc
ker
Doc
ker
++
Users Collab
Provenance Policy
Docker Hub
Registries
Public Curated Private
Docker Hub API
Third Party Tools
Prod Machine
Linux OS
Doc
ker
Doc
ker
Prod Machine
Linux OS
Doc
ker
Doc
ker
VM
Doc
ker
Doc
ker
VM
Doc
ker
Doc
ker
VM
Doc
ker
Doc
ker
QA Machine
Linux OS
Doc
ker
Doc
ker
![Page 5: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/5.jpg)
![Page 6: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/6.jpg)
![Page 7: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/7.jpg)
![Page 8: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/8.jpg)
![Page 9: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/9.jpg)
![Page 10: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/10.jpg)
![Page 11: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/11.jpg)
Deploy servicesreliably & consistently
• If it works locally, it will work on the server
• With exactly the same behavior
• Regardless of versions
• Regardless of distros
• Regardless of dependencies
![Page 12: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/12.jpg)
![Page 13: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/13.jpg)
Better! Faster! Stronger!
Better! Faster! Stronger!
![Page 14: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/14.jpg)
Hardware
VM (n)
Hardware
process (n)
process (n)
Hardware
VM (n)
Hardware
"contained"process (n)
"contained"process (n)process (n)
"contained"process (n)
Traditional Containerized
![Page 15: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/15.jpg)
![Page 16: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/16.jpg)
Traditional Host
syslogd nginx backup-agent sshd
![Page 17: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/17.jpg)
Traditional Host
syslogd nginx backup-agent sshd
Dockerized Host
syslogd nginx backup-agent sshd
![Page 18: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/18.jpg)
a security product?
• Docker Engine can be used as a security product.
• It provides a wrapper around processes
• Provides a path toward attestation of arbitrary processes (Trusted Compute)
• You can use VMs to wrap containers (and you can use containers inside of VMs)
![Page 19: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/19.jpg)
Dockerized Host
syslogd nginx backup-agent sshd
golden image:
FROM ubuntu
RUN apt-get install \ rsyslog nginx amanda opensshd
![Page 20: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/20.jpg)
Dockerized Host
syslogd nginx backup-agent sshd
syslog image:
FROM ubuntu
RUN apt-get install rsyslog
nginx image:
FROM fedora:f20
RUN yum install nginx
backup-agent image:
FROM ubuntu
RUN apt-get install amanda
sshd image:
FROM debian
RUN apt-get install opensshd
![Page 21: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/21.jpg)
Do it!
‣ Build an image"
‣ Run it locally
‣ Push it to a registry (public or private)
‣ Run it (automatically!) in CI/CD and staging
‣ Run it in production
![Page 22: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/22.jpg)
It’s an image builder.
![Page 23: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/23.jpg)
![Page 24: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/24.jpg)
![Page 25: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/25.jpg)
![Page 26: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/26.jpg)
![Page 27: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/27.jpg)
Anatomy of achef-container run:
Docker ContainerInitiates Creates
Image
Linux
Chef
Chef
Runs
Configures
Chef
Runs
Configures
Build Creates
Stage 1 Stage 2
![Page 28: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/28.jpg)
Do it!
‣ Build an image
‣ Run it locally
‣ Push it to a registry (public or private)
‣ Run it (automatically!) in CI/CD and staging
‣ Run it in production
![Page 29: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/29.jpg)
“docker run -t -i \ —rm=true my-image“
Legend:-t = allocate tty -i = interactive —rm = remove ephemeral filesystem when exiting
![Page 30: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/30.jpg)
“docker ps”
![Page 31: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/31.jpg)
Do it!
‣ Build an image
‣ Run it locally
‣ Push it to a registry (public or private)"
‣ Run it (automatically!) in CI/CD and staging
‣ Run it in production
![Page 32: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/32.jpg)
“docker push user/image”
![Page 33: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/33.jpg)
Do it!
‣ Build an image
‣ Run it locally
‣ Push it to a registry (public or private)
‣ Run it (automatically!) in CI/CD and staging
‣ Run it in production
![Page 34: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/34.jpg)
CI services…
and others…?
![Page 35: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/35.jpg)
$ ID=$(docker build $app-dir) $ docker run —rm=true $ID $ echo $?
![Page 36: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/36.jpg)
fig - local orchestration——fig.yml——web: build: . command: python app.py ports: - "5000:5000" volumes: - .:/code links: - redis redis: image: orchardup/redis
![Page 37: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/37.jpg)
$ ls Dockerfile fig.yml src$ docker run —privileged -v .:/opt/figapp \ ewindisch/figleaf $ echo $?
Legend:—privileged = run “uncontained”. A permissive “firewall”, if you will. -v = provide volume or bind-mount filesystem into container
![Page 38: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/38.jpg)
Do it!
‣ Build an image
‣ Run it locally
‣ Push it to a registry (public or private)
‣ Run it (automatically!) in CI/CD and staging
‣ Run it in production
![Page 39: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/39.jpg)
$ docker run -t -i \ —rm=false \ —restart=“on-failure[:5]” busybox
Legend:—restart=Restart policy on exit (no, on-failure[:max-retry], always)
![Page 40: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/40.jpg)
Managing Docker at scale
![Page 41: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/41.jpg)
Creating Containers is Easy
![Page 42: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/42.jpg)
Managing them SUCKS
needs improvement
![Page 43: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/43.jpg)
Management Ecosystem
Mesos
FlynnClockerClusterHQ
![Page 44: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/44.jpg)
PaaS ecosystem
![Page 45: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/45.jpg)
Configuration / Infrastructure Management
• Chef
• Puppet
• Salt
• Ansible
• CFEngine
• etc…
![Page 46: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/46.jpg)
Container Inventory
• discoverd / sdutil • serf • skydock • others?
![Page 47: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/47.jpg)
Docker Remote API
![Page 48: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/48.jpg)
• By default the Docker daemon listens on unix:///var/run/docker.sock
• Can listen on a TCP socket with TLS 1.0+Plain-text also possible, but do not use it!(enabled by default with boot2docker)
• Used by various community tools:fig, vagrant, ansible, etc.
![Page 49: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/49.jpg)
POST /containers/create HTTP/1.1 Content-Type: application/json !
{ "Hostname":"", "Domainname": "", "User":"", "Memory":0, "MemorySwap":0, "Env":null, “Cmd":[ "date" ], "Image":"base", “Volumes":{ "/tmp": {} }, "WorkingDir":"", "NetworkDisabled": false, "ExposedPorts":{ "22/tcp": {} }, "RestartPolicy": { "Name": "always" } }
HTTP/1.1 201 Created Content-Type: application/json !
{ "Id":"e90e34656806" "Warnings":[] }
![Page 50: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/50.jpg)
Containers • List containers • Create a
container • Inspect a
container • List processes
running inside a container
• Get container logs
• Inspect changes on a container's filesystem
• Export a container
• Resize a container TTY
• Start a container
• Stop a container
• Restart a container
• Kill a container • Pause a
container
• Unpause a container
• Attach to a container
• Wait a container • Remove a
container • Copy files or
folders from a container
!
!
![Page 51: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/51.jpg)
Images
• List Images
• Create an image
• Inspect an image
• Get the history of an image
• Push an image on the registry
• Tag an image into a repository
• Remove an image
• Search images
![Page 52: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/52.jpg)
Misc • Build an image from Dockerfile
via stdin • Check auth configuration • Display system-wide
information • Show the docker version
information • Ping the docker server • Create a new image from a
container's changes
• Monitor Docker's events • Get a tarball containing all
images in a repository • Get a tarball containing all
images. • Load a tarball with a set of
images and tags into docker • Image tarball format • Exec Create • Exec Start • Exec Resize
![Page 53: Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ](https://reader038.fdocuments.in/reader038/viewer/2022110121/558ddfd21a28ab24578b470b/html5/thumbnails/53.jpg)
Q & A
@ewindisch