docker overlay network - containerday · docker also creates another network called docker_gwbridge...

24
CTO @ Kiratech Marco Bizzantino [email protected] @bizzam #containerday Overlay Network Multi Docker Host Networking

Upload: others

Post on 19-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

CTO@KiratechMarcoBizzantino

[email protected]

@bizzam#containerday

OverlayNetworkMultiDockerHostNetworking

Page 2: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

UnderstandDockercontainernetworks

• Networks,bydefinition,providecompleteisolationforcontainers• It’simportanttohavecontroloverthenetworks• Dockercontainernetworksgiveyouthatcontrol

Page 3: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Dockernetworkingmodel

• ContainersdonothaveapublicIPv4address• Theyareallocatedaprivateaddress• Servicesrunningonacontainermustbe

exposedportbyport• Containerportshavetobemappedtothe

hostporttoavoidconflicts

Page 4: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

DefaultNetwork

• Dockerinstallationcreatesthreenetworksautomatically

• Youcanuse--netflagtospecifywhichnetworkyouwanttorunacontaineron

Page 5: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

BridgeNetwork

• Isthedocker0networkpresentinallDockerinstallations• Allcontainersbydefaultconnectstoit• Partofhost’snetworkstack• docker0 isassignedarandomIPaddressandsubnetfromthe

privaterangedefinedbyRFC1918

Page 6: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

NoneNetwork

• Container-specificnetworkstack

• Containerattachedlacksanetworkinterface

Page 7: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

HostNetwork

• Addsacontaineronthehostnetworkstack• Networkconfigurationinsidethecontaineris

identicaltothehost

Page 8: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Checkcontainernetworkingproperties

Thedocker networkinspectcommandreturnsinformationaboutanetwork

Page 9: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Networksummary

• Dockercontainersruninasubnetprovisionedbythedocker0bridgeonthehostmachine

• Wecancreateourownbridgeordifferentnetworktoruncontainerson

• AutomappingofcontainerportstohostportsonlyappliestotheportnumbersdefinedintheDockerfileEXPOSEinstruction

Page 10: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Multi-hostnetworking

• ContainersrunningondifferenthostscannotcommunicatewitheachotherwithoutmappingtheirTCPportstothehost’sTCPports

• Multi-hostnetworkingallowsthesecontainerstocommunicatewithoutrequiringportmapping

• TheDockerEnginesupportsmultihostnetworkingnativelyoutoftheboxviatheoverlay networkdriver

Page 11: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Multi-hostnetworking

Requirementsforcreatinganoverlaynetwork• Accesstoakey-valuestore• Aclusterofhostsconnectedtothekey-valuestore• AllhostsmusthaveKernelversion3.16orhigher• DockerEngineproperlyconfiguredoneachhost

Page 12: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Overlaynetwork

• overlaynetworkdriversupportsmulti-hostnetworkingnativelyout-of-the-box

• Basedonlibnetwork,abuilt-inVXLAN-basedoverlaynetworkdriver,andDocker’slibkv library

• Theoverlaynetworkrequiresavalidkey-valuestoreservice

• TheDockerhostsmustbeabletocommunicate• udpport4789 Dataplane(VXLAN)• tcp/udpport7946 Controlplane

Page 13: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Key-valuestore

Storesinformationaboutthenetworkstateincluding• Discovery• Endpoints• IPaddresses

Supportedoptions• Consul• Zookeeper(Distributedstore)• Etcd• BoltDB (Localstore)

Page 14: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Setupkey-valuestoreOnyourMasterNode

Runconsulinacontainerwiththefollowingcommanddocker run -d -p 8500:8500 -h consul --name consul \

progrium/consul -server –bootstrap

Checkthatconsulisrunningandthatport8500ismappedtothehostusingdocker ps

Page 15: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

ConfigureDockerEngines

TheDockerEngineoneachnodeneedstobeconfiguredto:• ListenonTCPport2375• UsetheConsulkey-valuestoreonourmasternode

ModifytheDOCKER_OPTSvariable

DOCKER_OPTS="-Htcp://0.0.0.0:2375\-Hunix:///var/run/docker.sock \--cluster-store=consul://<MasterNodeIP>:8500/network\--cluster-advertise=eth0:2375"

Page 16: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

ConfiguretheOverlaynetwork

CreateanoverlaynetworkononeofthemachinesintheSwarm

docker networkcreate-doverlay–subnet10.10.2.0/24multinet

Page 17: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Runningcontainersonamulti-hostnetwork

Torunacontaineronthemulti-hostnetwork,youjustneedtospecifythenetworknameonthedocker runcommand.Forexample:docker run -itd --name c1 --net multinet busyboxCanruncontainersfromanyhostconnectedtothenetworkContainerwillbeassignedanIPaddressfromthesubnetofyourmulti-hostnetwork

Page 18: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Runningcontainersonamulti-hostnetwork

Thefirsttimeanoverlaynetworkiscreatedonanyhost,Dockeralsocreatesanothernetworkcalleddocker_gwbridge

Thedocker_gwbridgenetworkprovidesexternalaccessforcontainers

AllTCP/UDPportsareopenonanoverlaynetworkandthus,itisnotnecessarytomapcontainerportstohostportsinorderforcontainerstocommunicate

Page 19: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

OverlayNetwork

Onceconnected,eachcontainerhasaccesstoallthecontainersinthenetworkregardlessofwhichDockerhostthecontainerwaslaunchedon.

Page 20: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Containerdiscovery

• Thedocker daemoncontainsanembeddedDNSserver• Containersmustrunwithaname(usingthe--name option).ThismapstotheIPaddressonthenetworkthecontainerisconnectedto.

• Whenacontainerisaddedtoamulti-hostnetwork,allotherhostswillbeabletodiscoveritviatheDNSserver

Page 21: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Containerdiscovery

• Containermayhaveanynumberofaliasesonanetwork

• Containersmayhavedifferentaliasesondifferentnetworks,setusingthe--alias optiononnetwork connect

• IftheembeddedDNSserverisunabletoresolvetherequestitwillbeforwardedtoanyexternalDNSserversconfiguredforthecontainer

Page 22: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Multi-hostNetworkSummary

• Anoverlay(multi-host)networkrequiresakey/valuestore

• Containersaddedtoamulti-hostnetworkarediscoverablebyothercontainers,aslongasthecontainername/aliashasbeenspecified

• Containersondifferenthostscancommunicatewitheachotherwithoutexposinganyportsifthehostsarepartofthesameoverlaynetwork

Page 23: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Macvlan andIpvlan NetworkDrivers

• completecontroloflayer2VLANtaggingandevenIpvlan L3routingforusersinterestedinunderlaynetworkintegration

• containerattacheddirectlytotheDockerhostinterface• easyaccessforexternalfacingservicesasthereisnoportmappings

• stillexperimental

Moreinformations:https://github.com/docker/docker/blob/master/experimental/vlan-networks.md

Page 24: Docker overlay network - ContainerDay · Docker also creates another network called docker_gwbridge The docker_gwbridgenetwork provides external access for containers All TCP/UDP

Thankyou