intro to docker containers - static.rainfocus.com · while dockerhas been playing a key role in...
TRANSCRIPT
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