Intro to Docker Containers - static.rainfocus.com · While Dockerhas been playing a key role in...

25
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Intro to Docker Containers March, 2018 Mike Raab Senior Principal Product Manager Oracle Container Development Houston, Texas @mikeraab

Transcript of Intro to Docker Containers - static.rainfocus.com · While Dockerhas been playing a key role in...

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

IntrotoDocker ContainersMarch,2018

MikeRaabSeniorPrincipalProductManagerOracleContainerDevelopmentHouston,Texas

@mikeraab

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirection.Itisintendedforinformationpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfunctionality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andtimingofanyfeaturesorfunctionalitydescribedforOracle’sproductsremainsatthesolediscretionofOracle.

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

ProgramAgenda

HistoryofContainers

ExcellentUseCasesforContainers

BasicArchitectureandNomenclature

WhyDocker isHot

AdditionalResources

Q&A

1

2

3

4

5

3

6

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 4

HistoryofContainers

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

HistoryandMulti-DimensionalEvolutionofComputing

5

DevelopmentProcess ApplicationArchitecture DeploymentandPackaging Application Infrastructure

Waterfall Monolithic PhysicalServer Datacenter

Agile N-Tier VirtualServers Hosted

DevOps Microservices Containers Cloud

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

HistoricTimelineofUnixContainers

6

Docker isbothaCompanyandTechnologyWhileDocker hasbeenplayingakeyroleinadoptionoftheLinuxcontainertechnology,theydidnotinventtheconceptofcontainers

However,theyhavemadethetechnologyconsumablebymerehumans

UNIXV7addedchroot 1979FreeBSDJails 2000

Linuxvserver 2001OracleSolarisZones 2004

openvz 2005ProcessContainers 2006

cgroups inLinuxKernel(2.6.24) 2007AIX(6.1)WPARS 2007

LCX 2008Warden 2011

LMCTFY 2013Docker 2013

rkt 2014OCI 2015

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

ExcellentUseCasesforContainersReadytoRunApplicationStacks

– ExcellentforDev/Testsetups– DeploymentinSeconds,notHours/Days– StartUp,TearDownQuickly

7

One-TimeRunJobsandAnalytics– RuntheJob/Analysisandquit

Front-EndAppServers– Highlyhorizontallyscalable– CattleNotPets– FastA/B,RollingDeployments– OptimizeCX– TraditionalTechnologies- MW/BackendNewAppDev&Microservices

– Refactorallorpartoflegacyapp– ContainersaregreatforMicroservices ServerDensity

– Containerscanusedynamicports– Runmanyofthesameapponaserver

• insteadofoneperVM

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

HowContainersareBeingUsed– SurveySays:

8

SOURCE:THEEVOLUTIONOFTHEMODERNSOFTWARESUPPLYCHAIN,DOCKERSURVEY2016

• Developerproductivityatopusecasetoday

• BuildingoutCI/CDpipelines– Consistentcontainerimagemovesthroughpipeline

– Preventing“itworkedindev”syndrome

• Applicationmodernizationandportabilityarealsokeyadoptiondrivers(Prem<->cloud)

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 9

BasicArchitectureandNomenclature

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

VirtualMachinesvs.Containers

VirtualMachines● Eachvirtualmachine(VM)

includestheapp,thenecessarybinariesandlibrariesandanentireguestoperatingsystem

Containers● Containersincludetheapp&allofitsdependencies,

butsharethekernelwithothercontainers.● Runasanisolatedprocessinuserspace onthehost OS● Not tiedtoanyspecificinfrastructure– containersrun

onanycomputer,infrastructureandcloud.

VMs

Containers

10Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

DockerArchitecture

11

• Dockerclient– CommandLineInterface(CLI)forinterfacingwiththeDocker

• Dockerfile– TextfileofDockerinstructionsusedtoassembleaDockerImage

• Image– HierarchiesoffilesbuiltfromaDockerfile,thefileusedasinputtothedockerbuildcommand

• Container– RunninginstanceofanImageusingthedockerruncommand

• Registry– Imagerepository

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Source:Dockerdocsandhttps://docs.docker.com/glossary/

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

DockerEngine

12

• Containerexecutionandadmin• UsesLinuxKernelnamespacesandcontrolgroups

• Namespacesprovideforisolatedworkspace

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Source:Dockerdocsandhttps://docs.docker.com/glossary/

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Docker Images• Animageisacollectionoffilesandsomemetadata• Imagesarecomprisedofmultiplelayers,multiplelayersreferencing/basedonanotherimage(UnionFileSystem)

• Eachimagecontainssoftwareyouwanttorun• Everyimagecontainsabaselayer• Layersarereadonly

Copyright©2017Oracleand/oritsaffiliates.AllrightsreservedCopyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Source:Dockerdocsandhttps://docs.docker.com/glossary/

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|14

Dockerfile– Textfile(recipe)usedtocreateDocker images

ExampleHelloWorldDockerfileFROMnginx:1.10.1-alpine

Addindex.html /usr/share/nginx/html/index.html

#Overridethenginx startfromthebasecontainer

COPYstart.sh /start.sh

RUNchmod +x/start.sh

ENTRYPOINT["/start.sh"]

Docker buildimageCLIexample$docker build-thelloworld:1.0.

NOTE:The“.”referencesDockerfileinlocaldirectory

Source:https://github.com/scottsbaldwin/docker-hello-world/blob/master/Dockerfile

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Docker Hub

15

• Docker Inc.– Repository– publicandprivateimages

• Enablesimagestobesharedandmovedoffthelaptop

• Exampleusage:– $docker tagdocker-whale:latest username/docker-whale:latest– $docker pushusername/docker-whale:latest– $docker pullusername/docker-whale:latest

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Docker CLI– Common/usefulcommands• docker build:builddocker imagefromDockerfile• docker run:rundocker image• docker logs:showlogdataforarunningorstoppedcontainer• docker ps :listrunningdocker containers(analogoustops)• docker ps –a:listallcontainersincludingnotrunning• docker images:listallimagesonthelocalvolume• docker rm :remove/deleteacontainer|docker rmi :remove/deleteanimage• docker tag:nameadocker image• docker login:logintoregistry• docker push/pull:pushorpullvolumesto/fromDocker Registries• docker inspect:returncontainerruntimeconfigurationparametermetadata

16Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Seethedocshere:https://docs.docker.com/edge/engine/reference/commandline/docker/

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Docker Run

Pullstheimageandrunsitasacontainer• Examples:

– Simple:$ docker run hello-world

– Complex:$ docker run -d --restart=always -p=443:5000/tcp-e="REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt"-e="REGISTRY_HTTP_TLS_KEY=/certs/registry.example.com.key"-e="REGISTRY_AUTH=htpasswd"-e="REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"-e="REGISTRY_AUTH_HTPASSWD_REALM=Our Test Registry"-v=/home/opc/certs:/certs -v=/home/opc/auth:/auth-v=/home/opc/registry:/var/lib/registry "registry:2"

17Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Docker Compose

• Docker Compose– Docker Toolfordefiningandrunningmulti-containerDockerapplications

– ReferencefiledefinedinYAML• docker-compose.yml

• $docker-composeup-d

18Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 19

WhyDocker isHot

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

NewAppDev(includingpartsoflegacyapps)

CodeAgility,CI/CDPipeline,DevOps

Dev/TestofLegacyApps

WhyDocker isHot– Itssimple,Devs loveit

AdoptionofOpenSource

Microservices&CloudNativeApps

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

WhyContainers?

21

• Quicklycreateready-to-runpackagedapplications,lowcostdeploymentandreplay

• Automatetesting,integration,packaging• Reduce/eliminateplatformcompatibilityissues(“Itworksindev!”)

• Supportnextgenapplications(microservices)

• Improvespeed andfrequencyofreleases,reliabilityofdeployments

• Makesapplifecycleefficient,consistentandrepeatable– configureonce,runmanytimes

• Eliminateenvironmentinconsistenciesbetweendevelopment,test,production

• Improveproductionapplicationresiliencyandscaleout/inondemand

Developerscarebecause: ITcaresbecause:

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

ContainersarePortable,butHowaboutAdvancedFunctions

AdvancedFunctions• Orchestration,Monitoring,Operations,Service

Discovery

• Docker EnvironmentProvisioning

FragmentedMarketSolutions• Kubernetes

• Swarm,Docker DataCenter,Docker Cloud

• Consul,ETCD,Docker Networking

• etc

+

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|

Oracle Cloud Infrastructure and DockerRoll Your Own, Pre-Built Installer, Container Service Classic and Managed Kubernetes Service

Quickstart ExperienceOSSTerraformInstalleronGitHubOCI OCIContainerEngine

forKubernetes

DIYContainerManagement

SelfManagedKubernetesService

EnterpriseClassManagedKubernetesService

IaaS CaaS

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 24

AdditionalResourcesResource Location

Entry LevelHands-on Lab https://github.com/oracle/cloud-native-devops-workshop/tree/master/containers/docker001

Oracle ContainerCloudService https://cloud.oracle.com/en_US/container

OfficialImageRegistries OracleImagesontheDocker StoreOracleContainerRegistry

Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved

Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| Confidential– OracleInternal/Restricted/HighlyRestricted 25

Questions?