SlideShare a Scribd company logo
Patrick Chanezon, @chanezon March 2018
Docker Enterprise Workshop
French
Polyglot
Platforms
Software Plumber
San Francisco
Developer Relations
@chanezon
Docker 101
spring-doge.jar
Example: Spring Boot App using MongoDB
https://github.com/chanezon/docker-tips/tree/master/java-in-container-dev/spring-doge-workspace
spring-doge
spring-doge-web
spring-doge-photo
API: Spring Boot, Spring Data
UI: AngularJS
Business Logic: java.awt
java -Dserver.port=8080 
-Dspring.data.mongodb.uri=mongodb://mongo:27017/test 
-jar spring-doge.jar
Dockerfile for development
FROM java:8
MAINTAINER Patrick Chanezon <patrick@chanezon.com>
EXPOSE 8080
COPY spring-doge/target/*.jar /usr/src/spring-doge/spring-
doge.jar
WORKDIR /usr/src/spring-doge
CMD java -Dserver.port=8080 -
Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar
Using Docker to compile your jar/war
https://registry.hub.docker.com/_/maven/
docker run -it --rm 
-v $PWD:/usr/src/spring-doge 
-v maven:/root/.m2 
-w /usr/src/spring-doge 
maven:3.3-jdk-8 
mvn package
Build an image
docker build -t chanezon/spring-doge .
FROM java:8
MAINTAINER Patrick Chanezon <patrick@chanezon.com>
EXPOSE 8080
COPY spring-doge/target/*.jar /usr/src/spring-doge/spring-
doge.jar
WORKDIR /usr/src/spring-doge
CMD java -Dserver.port=8080 -
Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar
Dockerfile with multi stage build
FROM maven:3.5-jdk-8 as builder
MAINTAINER Patrick Chanezon <patrick@chanezon.com>
COPY . /usr/src
WORKDIR /usr/src
RUN mvn package
FROM openjdk:8u131-jre
EXPOSE 8080
COPY --from=builder /usr/src/spring-doge/target/*.jar
/usr/app/spring-doge.jar
WORKDIR /usr/app
CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI -
jar spring-doge.jar
HEALTHCHECK --interval=5m --timeout=3s --retries=3
Run a container
docker run 
—env MONGODB_URI=mongodb://mongo:27017/test 
-p 8090:8080 
chanezon/spring-doge
docker-compose: running multiple containers
● Run your stack with one command: docker-compose up
● Describe your stack with one file: docker-compose.yml
version: '3.3'
services:
web:
image: chanezon/spring-doge
ports:
- "8080:8080"
environment:
- MONGODB_URI=mongodb://mongo:27017/test
mongo:
image: mongo
docker stack deploy
● Deploy your stack with one command: docker stack deploy
● Describe your stack with one file: docker-compose.yml
version: '3'
services:
web:
image: chanezon/spring-doge
ports:
- "8004:8080"
environment:
- MONGODB_URI=mongodb://mongo:27017/test
depends_on:
- mongo
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
mongo:
image: mongo
Docker Java Labs
https://github.com/docker/labs/tree/master/developer-tools/
• Wildfly and Couchbase J2EE App
• Debugging a Java app in Docker using Eclipse
Docker and
Microsoft
Microsoft is an Open Source champion
Docker & Microsoft: a great Open Source collaboration
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
Docker for Windows Docker for Azure
Docker for Azure
Making things simple for a great user experience
Virtual Network VMSS
Blob Storage Azure LB ARM
AAD
Docker EE on Azure
Free 30 Days Test Drive from Docker Store
Docker & Microsoft: collaboration on all fronts
• Build
• Docker for Windows
• Docker EE for Windows Servers
• Visual Studio Tools for Docker
• Visual Studio Code Docker extension
• Ship
• Visual Studio Team Services Docker Integration
• Azure Container Registry
• Run
• Docker EE in Azure MarketPlace
• Docker on Azure Stack
Docker with Windows Server 1709
• Docker Linux Containers on Windows
• Docker ingress mode service publishing on Windows
• Named pipes in Windows containers
> docker run -d -p 8080:8080 -v
.pipedocker_engine:.pipedocker_engine
friism/jenkins
• Smaller Windows base images: Nanoserver download
70MB
https://blog.docker.com/2017/09/docker-windows-server-1709/
.Net and ASP.NET Docker Images & Samples
• Smaller Windows base images
• Nanoserver download 70MB
• Alpine images
• Linux and Windows
• Multi stage build
• Unit tests at build or runtime
https://github.com/dotnet/dotnet-docker/tree/master/samples
Swarm Windows Roadmap for Docker EE
24
Versions Release Date Highlights
Docker EE 2.0.0 GA Q1 2018 ● Only Windows Server 2016 (RS1) Supported
○ Easy Image Compatibility: No
○ Ingress Networking: No
Docker EE 2.0.x
Patches
Q2 2018 ● Add Windows Server 1709 (RS3) support with partial features:
○ Easy Image Compatibility: Yes
○ Ingress Networking: No
Docker EE 2.1 Q3 2018 ● Full Support for Windows Server 1709
○ Easy Image Compatibility: Yes
○ Ingress Networking: Yes
● Tentative Considerations:
○ Windows Server 1803 (RS4) support
○ Possible new Windows LTSC version in Q3
Kube Windows Known Timelines (Still assessing for EE Roadmap)
25
Q4’ 2017
Kube 1.9
Beta support for Windows
● Docker 17.06 engine
● Windows Server 1709
Q1’2018
Kube 1.10
Beta Support for Windows
● Docker 17.06 engine
● Windows Server 1709
Q2’2018
Kube 1.11
GA Support for Windows
● Docker 17.06 engine
● Possibly containerd
● Windows Server 1709
(RS3)
● Windows Server 1803
(RS4)
H2’ 2018
Kube 1.x?
GA Support for Windows
● Possibly containerd
● Windows Server LTS
release
Kubernetes in
Docker
Lifecycle of a Kubernetes API Request
Kubernetes API Server
Authentication Authorization
Admission
Control
etcd
Orchestrator: Docker Engine with Swarm-Mode Enabled
● github.com/docker/swarmkit
● Declarative State through the “Service” construct
● Built-in Routing Mesh & Overlay networking
● In-memory Raft Store for all state (persisted to disk)
● Built-in CA, per-node cryptographic node identity, mTLS between all endpoints
Orchestrator: Kubernetes
● github.com/kubernetes/kubernetes
● Scheduling Unit: Pods
● Declarative State through “Controllers”: Deployment, ReplicaSet, DaemonSet …
● Load balancing via Services and Ingresses
● Flat Networking model delegated to plugins
Linuxkit VM
Kubernetes CLI
Swarm Mode
Kubernetes
etcd
Docker CLI
kubeadm
Kubernetes in Docker CE (Windows and Mac)
Compose
CRD
Single Docker Engine
vpnkitHost fs mounts hyperkit / hyperv
Kubernetes in Docker Desktop
Docker EE now includes Kubernetes
Docker Enterprise Edition
Production Ready Windows and IBM P/Z Support
Pods, batch jobs, blue-green deployments,
horizontal pod auto-scaling
Docker Swarm Swarm-Mode Kubernetes
Private Image Registry
Secure Access and User
Management
App and Cluster Management
Image Security Scanning Content Trust and Verification
Policy Management
GUI
Universal Control Plane
Trusted Registry Kubernetes CLI
Docker Engine
Swarm-Mode
Docker Swarm Kubernetes
etcd
CA OIDC Provider
Docker CLI
Node Agent Reconciler
Kubernetes in Docker EE
Docker EE 2.0: A conformant kubernetes distribution
Docker EE Architectural Highlights
● Conformant Kubernetes components ran as Docker containers
● Swarm Managers are Kubernetes Masters
● Swarmkit node inventory is source of truth
● Cryptographic Node Identity and mTLS used throughout
Uses of Kubernetes
Plugin Interfaces
Authentication
● X509 Client Certificates
○ Used for authentication of kubectl and the docker CLI via the “client bundle” feature
● OpenID Connect Identity Provider
○ GUI sessions use a custom identity provider and a token exchange service to authenticate with
the OIDC authentication plugin
Authorization
● All requests authorized via the Authorization Webhook plugin
● Custom RBAC system shared between Swarm and Kubernetes:
○ Users, Teams, Organizations, Service Accounts
○ Custom Roles
○ Hierarchical “Grants”
● No support for the rbac.authorization.k8s.io API, future plans for API translation
Admission Control
● Allows plugins to inspect, mutate or reject API requests after authorization
● Used for:
○ Orchestrator Selection
○ Linking nodes to namespaces
○ User Impersonation for Stacks
○ Image Signing policy enforcement
Orchestrator Selection
● Each node is running both kubernetes and swarm system components
● Administrators can toggle between (kubernetes, swarm or mixed) for any given node
● When toggling orchestrators, workloads of the previous orchestrator will be evicted
● An admission controller ensures that kubernetes workloads can only be scheduled on nodes
labelled as “kubernetes” nodes.
● Workloads of multiple orchestrators on the same node can lead to resource contention
Manager Node
(K8s, Swarm)
Worker Node
(Swarm)
Worker Node
(Kubernetes)
Worker Node
(Kubernetes)
Kubelet
Swarm Agents
Kubelet Kubelet Kubelet
Swarm Agents Swarm Agents Swarm Agents
Linking Nodes to Namespaces
● Allows users to uniquely assign nodes to namespaces.
● Variation of the PodNodeSelector admission controller integrated with UCP’s RBAC system
Image Signing Policy Enforcement
● Enforces that all workloads deployed in the cluster have a fully qualified image reference
● Resolves image references to always include a digest
● Contacts the registry to ensure that the referenced image has been signed by an authorized
user.
Docker
Enterprise Workshop
Hybrid App
v1
v2
Instructions
• Signup: ask karen.bajza@docker.com to plan your workshop and
provide you the url.
• Instructions: https://github.com/dockersamples/ee-workshop
• Code: https://github.com/dockersamples/hybrid-app
Thank You!
chanezon
@chanezon

More Related Content

PPTX
KubeCon 2019 - Scaling your cluster (both ways)
PPTX
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
PPTX
Going Serverless with Kubeless In Google Container Engine (GKE)
PDF
Introduction to Kubernetes with demo
PDF
CI/CD with Openshift and Jenkins
PPTX
Why kubernetes matters
PDF
Deploying containerized applications with Kubeapps
PPTX
Cloud foundry: The Platform for Forging Cloud Native Applications
KubeCon 2019 - Scaling your cluster (both ways)
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
Going Serverless with Kubeless In Google Container Engine (GKE)
Introduction to Kubernetes with demo
CI/CD with Openshift and Jenkins
Why kubernetes matters
Deploying containerized applications with Kubeapps
Cloud foundry: The Platform for Forging Cloud Native Applications

What's hot (20)

PDF
KubeCon EU 2016 Keynote: Kubernetes State of the Union
PDF
GitOps - Operation By Pull Request
PPTX
Devoxx 2015 - Web Application Development using Grails and Docker
PPTX
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
PDF
How to build your containerization strategy
PPTX
Kubernates : An Small introduction for Beginners by Rajiv Vishwkarma
PDF
Considerations for operating docker at scale
PDF
Unlimited Staging Environments
PDF
Jenkins X intro (from google app dev conference)
PPTX
Canary Releases on Kubernetes with Spinnaker, Istio, & Prometheus (2020)
PDF
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
PDF
Cloud Native CI/CD with GitOps
PDF
Multi-cloud Kubernetes BCDR with Velero
PDF
GlueCon kubernetes & container engine
PPTX
Continuous Delivery to Kubernetes Using Helm
PDF
Containers, OCI, CNCF, Magnum, Kuryr, and You!
PDF
Hands on docker
PPTX
Building CI/CD Pipelines with Jenkins and Kubernetes
PPTX
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
PDF
Cloud Native Landscape (CNCF and OCI)
KubeCon EU 2016 Keynote: Kubernetes State of the Union
GitOps - Operation By Pull Request
Devoxx 2015 - Web Application Development using Grails and Docker
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
How to build your containerization strategy
Kubernates : An Small introduction for Beginners by Rajiv Vishwkarma
Considerations for operating docker at scale
Unlimited Staging Environments
Jenkins X intro (from google app dev conference)
Canary Releases on Kubernetes with Spinnaker, Istio, & Prometheus (2020)
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
Cloud Native CI/CD with GitOps
Multi-cloud Kubernetes BCDR with Velero
GlueCon kubernetes & container engine
Continuous Delivery to Kubernetes Using Helm
Containers, OCI, CNCF, Magnum, Kuryr, and You!
Hands on docker
Building CI/CD Pipelines with Jenkins and Kubernetes
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Cloud Native Landscape (CNCF and OCI)
Ad

Similar to Docker Enterprise Workshop - Technical (20)

PPTX
Deploying windows containers with kubernetes
PDF
Deploying WSO2 Middleware on Containers
PDF
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
PPTX
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
PDF
Red Hat and kubernetes: awesome stuff coming your way
PPTX
Kubernetes #1 intro
PDF
The App Developer's Kubernetes Toolbox
PDF
Kubernetes for java developers - Tutorial at Oracle Code One 2018
PPTX
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
PDF
Docker Dublin Meetup | 22 Feb 2018 | Docker + Kubernetes
PDF
DevOPS training - Day 2/2
PDF
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
PPTX
What's New in Docker - February 2017
PDF
Docker on docker leveraging kubernetes in docker ee
PDF
DCEU 18: State of the Docker Engine
PDF
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
PPTX
Scaling Docker Containers using Kubernetes and Azure Container Service
PPTX
Microsoft Techsummit Zurich Docker and Microsoft
PDF
Kubernetes with docker
PPTX
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Deploying windows containers with kubernetes
Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Red Hat and kubernetes: awesome stuff coming your way
Kubernetes #1 intro
The App Developer's Kubernetes Toolbox
Kubernetes for java developers - Tutorial at Oracle Code One 2018
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Dublin Meetup | 22 Feb 2018 | Docker + Kubernetes
DevOPS training - Day 2/2
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
What's New in Docker - February 2017
Docker on docker leveraging kubernetes in docker ee
DCEU 18: State of the Docker Engine
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
Scaling Docker Containers using Kubernetes and Azure Container Service
Microsoft Techsummit Zurich Docker and Microsoft
Kubernetes with docker
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Ad

More from Patrick Chanezon (20)

PPTX
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
PPTX
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
PPTX
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
PPTX
Docker Enterprise Workshop - Intro
PPTX
The Tao of Docker - ITES 2018
PPTX
Moby KubeCon 2017
PPTX
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
PPTX
DockerCon EU 2017 Recap
PPTX
Docker Innovation Culture
PPTX
The Tao of Docker - Devfest Nantes 2017
PPTX
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
PPTX
Moby Open Source Summit North America 2017
PPTX
Moby Introduction - June 2017
PPTX
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
PPTX
Weave User Group Talk - DockerCon 2017 Recap
PPTX
Oscon 2017: Build your own container-based system with the Moby project
PPTX
Containerd Donation to CNCF Cloud Native Conference Berlin 2017
PPTX
Using Open Source and Open Standards in the Platform game
PPTX
Docker containerd Kubernetes sig node
PPTX
Docker 101 Checonf 2016
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
Docker Enterprise Workshop - Intro
The Tao of Docker - ITES 2018
Moby KubeCon 2017
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
DockerCon EU 2017 Recap
Docker Innovation Culture
The Tao of Docker - Devfest Nantes 2017
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Moby Open Source Summit North America 2017
Moby Introduction - June 2017
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Weave User Group Talk - DockerCon 2017 Recap
Oscon 2017: Build your own container-based system with the Moby project
Containerd Donation to CNCF Cloud Native Conference Berlin 2017
Using Open Source and Open Standards in the Platform game
Docker containerd Kubernetes sig node
Docker 101 Checonf 2016

Recently uploaded (20)

PPT
Introduction Database Management System for Course Database
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
System and Network Administraation Chapter 3
PPTX
ai tools demonstartion for schools and inter college
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Transform Your Business with a Software ERP System
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
top salesforce developer skills in 2025.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Complete React Javascript Course Syllabus.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
Introduction Database Management System for Course Database
Understanding Forklifts - TECH EHS Solution
Upgrade and Innovation Strategies for SAP ERP Customers
System and Network Administraation Chapter 3
ai tools demonstartion for schools and inter college
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Materi-Enum-and-Record-Data-Type (1).pptx
Wondershare Filmora 15 Crack With Activation Key [2025
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
L1 - Introduction to python Backend.pptx
Transform Your Business with a Software ERP System
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
top salesforce developer skills in 2025.pdf
Design an Analysis of Algorithms II-SECS-1021-03
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Complete React Javascript Course Syllabus.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Materi_Pemrograman_Komputer-Looping.pptx

Docker Enterprise Workshop - Technical

  • 1. Patrick Chanezon, @chanezon March 2018 Docker Enterprise Workshop
  • 4. spring-doge.jar Example: Spring Boot App using MongoDB https://github.com/chanezon/docker-tips/tree/master/java-in-container-dev/spring-doge-workspace spring-doge spring-doge-web spring-doge-photo API: Spring Boot, Spring Data UI: AngularJS Business Logic: java.awt java -Dserver.port=8080 -Dspring.data.mongodb.uri=mongodb://mongo:27017/test -jar spring-doge.jar
  • 5. Dockerfile for development FROM java:8 MAINTAINER Patrick Chanezon <patrick@chanezon.com> EXPOSE 8080 COPY spring-doge/target/*.jar /usr/src/spring-doge/spring- doge.jar WORKDIR /usr/src/spring-doge CMD java -Dserver.port=8080 - Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar
  • 6. Using Docker to compile your jar/war https://registry.hub.docker.com/_/maven/ docker run -it --rm -v $PWD:/usr/src/spring-doge -v maven:/root/.m2 -w /usr/src/spring-doge maven:3.3-jdk-8 mvn package
  • 7. Build an image docker build -t chanezon/spring-doge . FROM java:8 MAINTAINER Patrick Chanezon <patrick@chanezon.com> EXPOSE 8080 COPY spring-doge/target/*.jar /usr/src/spring-doge/spring- doge.jar WORKDIR /usr/src/spring-doge CMD java -Dserver.port=8080 - Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar
  • 8. Dockerfile with multi stage build FROM maven:3.5-jdk-8 as builder MAINTAINER Patrick Chanezon <patrick@chanezon.com> COPY . /usr/src WORKDIR /usr/src RUN mvn package FROM openjdk:8u131-jre EXPOSE 8080 COPY --from=builder /usr/src/spring-doge/target/*.jar /usr/app/spring-doge.jar WORKDIR /usr/app CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI - jar spring-doge.jar HEALTHCHECK --interval=5m --timeout=3s --retries=3
  • 9. Run a container docker run —env MONGODB_URI=mongodb://mongo:27017/test -p 8090:8080 chanezon/spring-doge
  • 10. docker-compose: running multiple containers ● Run your stack with one command: docker-compose up ● Describe your stack with one file: docker-compose.yml version: '3.3' services: web: image: chanezon/spring-doge ports: - "8080:8080" environment: - MONGODB_URI=mongodb://mongo:27017/test mongo: image: mongo
  • 11. docker stack deploy ● Deploy your stack with one command: docker stack deploy ● Describe your stack with one file: docker-compose.yml version: '3' services: web: image: chanezon/spring-doge ports: - "8004:8080" environment: - MONGODB_URI=mongodb://mongo:27017/test depends_on: - mongo deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure mongo: image: mongo
  • 12. Docker Java Labs https://github.com/docker/labs/tree/master/developer-tools/ • Wildfly and Couchbase J2EE App • Debugging a Java app in Docker using Eclipse
  • 14. Microsoft is an Open Source champion
  • 15. Docker & Microsoft: a great Open Source collaboration
  • 18. Docker for Windows Docker for Azure
  • 19. Docker for Azure Making things simple for a great user experience Virtual Network VMSS Blob Storage Azure LB ARM AAD
  • 20. Docker EE on Azure Free 30 Days Test Drive from Docker Store
  • 21. Docker & Microsoft: collaboration on all fronts • Build • Docker for Windows • Docker EE for Windows Servers • Visual Studio Tools for Docker • Visual Studio Code Docker extension • Ship • Visual Studio Team Services Docker Integration • Azure Container Registry • Run • Docker EE in Azure MarketPlace • Docker on Azure Stack
  • 22. Docker with Windows Server 1709 • Docker Linux Containers on Windows • Docker ingress mode service publishing on Windows • Named pipes in Windows containers > docker run -d -p 8080:8080 -v .pipedocker_engine:.pipedocker_engine friism/jenkins • Smaller Windows base images: Nanoserver download 70MB https://blog.docker.com/2017/09/docker-windows-server-1709/
  • 23. .Net and ASP.NET Docker Images & Samples • Smaller Windows base images • Nanoserver download 70MB • Alpine images • Linux and Windows • Multi stage build • Unit tests at build or runtime https://github.com/dotnet/dotnet-docker/tree/master/samples
  • 24. Swarm Windows Roadmap for Docker EE 24 Versions Release Date Highlights Docker EE 2.0.0 GA Q1 2018 ● Only Windows Server 2016 (RS1) Supported ○ Easy Image Compatibility: No ○ Ingress Networking: No Docker EE 2.0.x Patches Q2 2018 ● Add Windows Server 1709 (RS3) support with partial features: ○ Easy Image Compatibility: Yes ○ Ingress Networking: No Docker EE 2.1 Q3 2018 ● Full Support for Windows Server 1709 ○ Easy Image Compatibility: Yes ○ Ingress Networking: Yes ● Tentative Considerations: ○ Windows Server 1803 (RS4) support ○ Possible new Windows LTSC version in Q3
  • 25. Kube Windows Known Timelines (Still assessing for EE Roadmap) 25 Q4’ 2017 Kube 1.9 Beta support for Windows ● Docker 17.06 engine ● Windows Server 1709 Q1’2018 Kube 1.10 Beta Support for Windows ● Docker 17.06 engine ● Windows Server 1709 Q2’2018 Kube 1.11 GA Support for Windows ● Docker 17.06 engine ● Possibly containerd ● Windows Server 1709 (RS3) ● Windows Server 1803 (RS4) H2’ 2018 Kube 1.x? GA Support for Windows ● Possibly containerd ● Windows Server LTS release
  • 27. Lifecycle of a Kubernetes API Request Kubernetes API Server Authentication Authorization Admission Control etcd
  • 28. Orchestrator: Docker Engine with Swarm-Mode Enabled ● github.com/docker/swarmkit ● Declarative State through the “Service” construct ● Built-in Routing Mesh & Overlay networking ● In-memory Raft Store for all state (persisted to disk) ● Built-in CA, per-node cryptographic node identity, mTLS between all endpoints
  • 29. Orchestrator: Kubernetes ● github.com/kubernetes/kubernetes ● Scheduling Unit: Pods ● Declarative State through “Controllers”: Deployment, ReplicaSet, DaemonSet … ● Load balancing via Services and Ingresses ● Flat Networking model delegated to plugins
  • 30. Linuxkit VM Kubernetes CLI Swarm Mode Kubernetes etcd Docker CLI kubeadm Kubernetes in Docker CE (Windows and Mac) Compose CRD Single Docker Engine vpnkitHost fs mounts hyperkit / hyperv
  • 32. Docker EE now includes Kubernetes Docker Enterprise Edition Production Ready Windows and IBM P/Z Support Pods, batch jobs, blue-green deployments, horizontal pod auto-scaling Docker Swarm Swarm-Mode Kubernetes Private Image Registry Secure Access and User Management App and Cluster Management Image Security Scanning Content Trust and Verification Policy Management
  • 33. GUI Universal Control Plane Trusted Registry Kubernetes CLI Docker Engine Swarm-Mode Docker Swarm Kubernetes etcd CA OIDC Provider Docker CLI Node Agent Reconciler Kubernetes in Docker EE
  • 34. Docker EE 2.0: A conformant kubernetes distribution
  • 35. Docker EE Architectural Highlights ● Conformant Kubernetes components ran as Docker containers ● Swarm Managers are Kubernetes Masters ● Swarmkit node inventory is source of truth ● Cryptographic Node Identity and mTLS used throughout
  • 37. Authentication ● X509 Client Certificates ○ Used for authentication of kubectl and the docker CLI via the “client bundle” feature ● OpenID Connect Identity Provider ○ GUI sessions use a custom identity provider and a token exchange service to authenticate with the OIDC authentication plugin
  • 38. Authorization ● All requests authorized via the Authorization Webhook plugin ● Custom RBAC system shared between Swarm and Kubernetes: ○ Users, Teams, Organizations, Service Accounts ○ Custom Roles ○ Hierarchical “Grants” ● No support for the rbac.authorization.k8s.io API, future plans for API translation
  • 39. Admission Control ● Allows plugins to inspect, mutate or reject API requests after authorization ● Used for: ○ Orchestrator Selection ○ Linking nodes to namespaces ○ User Impersonation for Stacks ○ Image Signing policy enforcement
  • 40. Orchestrator Selection ● Each node is running both kubernetes and swarm system components ● Administrators can toggle between (kubernetes, swarm or mixed) for any given node ● When toggling orchestrators, workloads of the previous orchestrator will be evicted ● An admission controller ensures that kubernetes workloads can only be scheduled on nodes labelled as “kubernetes” nodes. ● Workloads of multiple orchestrators on the same node can lead to resource contention Manager Node (K8s, Swarm) Worker Node (Swarm) Worker Node (Kubernetes) Worker Node (Kubernetes) Kubelet Swarm Agents Kubelet Kubelet Kubelet Swarm Agents Swarm Agents Swarm Agents
  • 41. Linking Nodes to Namespaces ● Allows users to uniquely assign nodes to namespaces. ● Variation of the PodNodeSelector admission controller integrated with UCP’s RBAC system
  • 42. Image Signing Policy Enforcement ● Enforces that all workloads deployed in the cluster have a fully qualified image reference ● Resolves image references to always include a digest ● Contacts the registry to ensure that the referenced image has been signed by an authorized user.
  • 45. Instructions • Signup: ask karen.bajza@docker.com to plan your workshop and provide you the url. • Instructions: https://github.com/dockersamples/ee-workshop • Code: https://github.com/dockersamples/hybrid-app

Editor's Notes

  • #21: Build each point so the final slide has all 3 points. Safer apps mean that when you build and deploy your app in docker, it is intrinsicly more secure TD is everything is needed for the full fucntioning of your app is delivered in a secure and trusted manner All of these things in your system are in the app platform itself and move across = usable = people are not leaning in to security Secrets enable: secure API handshakes, encrypted communication what else? Assign secrets to services when they are ready to run and need to connect to other services (both internal and external)
  • #32: Windows containers are different
  • #35: Runs on Docker EE engine Swarm-mode Managers are Kubernetes Masters Swarm-modet node inventory is source of truth Cryptographic Node Identity and mTLS used throughout Unmodified Kubernetes components run as Docker containers UCP Agent/Reconciler manages component lifecycle Manager / Worker states Certificate validity Patching and upgrades Leverage Kubernetes extension model (webhooks, initializers, flexvolume, CNI, etc.) We will submit the product and aim to pass the Certified Kubernetes Conformance program
  • #39: Requests arriving to the UCP controller against the kubernetes API will have their session token exchanged for a long-lived identity token. The request is then forwarded to the kubernetes API server which is configured to trust UCP’s identity tokens.
  • #40: A Grant is either a RoleBinding or a ClusterRoleBinding
  • #41: Grant creation is UCP-specific