Docker has made containerizing applications easy. This ease of use has given birth to a vibrant ecosystem of innovation. As more workloads become containerized and more tooling emerges from this ecosystem it is becoming harder to define the best dev/test/prod environment for your work. In this session we’ll discuss Microsoft’s strategy for supporting your Docker container work. We’ll discuss how important the open source ecosystem is to this strategy and we’ll take a look at the Azure Container Service which provides a Docker native experience using only the open source tools and APIs built by the community. We’ll see how this approach allows established tooling to be used within ACS and how ACS can help facilitate innovation in the ecosystem. Finally, we’ll take a look at some of the Microsoft led innovations in the pipeline.
Strategies for Landing an Oracle DBA Job as a Fresher
It Takes an Ecosystem to Build a Production Application by Ross Gardler
1. It takes an ecosystem to build a
production application
Ross Gardler
@rgardler
2. Docker, Docker, Docker
• They created open source software to build and manage containers
• Even I can create and run them
• Docker CLI, Docker Engine, Docker Swarm, Docker Compose, Docker Machine and more…
3. Docker makes it Easy
• Many people agree that:
• Development is easier with Docker
• Scaling is easier with Docker
• Continuous Integration is easier with Docker
• Testing is easier with Docker
• So just adopt Docker and life is easier, right?
• Applications don’t consist of a single container
• How do we manage applications?
4. Docker is an Ecosystem
• Docker make Containerization accessible
• It has spawned an Ecosystem
• This session is about why the Ecosystem is improtant
6. “A model where IT organizations and developers
can work together to build, ship and run their
applications anywhere.” https://blog.docker.com/2016/02/containers-as-a-service-caas/
7. Docker offers portability
• Docker containers are portable
• Orchestrate them with Docker Swarm, Kubernetes, Apache Mesos, DC/OS etc.
• Run them on Azure, AWS, Google, Digital Ocean etc.
• But, what about applications consisting of many containers?
8. An orchestrator is not enough
• Continuous Delivery
• Resource Management
• High Availability
• Storage
• Networking
• Load Balancing
• Service Discovery
• Monitoring
• … and more
9. What about everything else?
• Continuous Delivery
• Resource Management
• High Availability
• Storage
• Networking
• Load Balancing
• Service Discovery
• Monitoring
• … and more
• Who’s going to configure it all?
• What about optimizing for the
infrastructure of choice?
• Are you locking into a cloud
provider because of your choice
of orchestrator?
10. Building a Container Hosting Platform
Docker Engine
Container ToolingService Tooling • Not everything is open
source software
• There is a limit to portability
when it comes to electricity
and CPUs
• How do you minimize the
lock-in to specific hardware
and software infrastructure
Mesos now provides more advanced scheduling as well as fault tolerance
But now it’s getting really complicated to configure my environment:
Docker CLI
Docker Machine
Docker Host with Docker Engine
Docker containers
Apache Mesos
Docker Swarm
(and the diagram doesn’t even include the required registry and multiple masters with Apache Zookeeper that you would use in production, we’re also ignoring the need to monitor what is happening – more on monitoring soon)
Azure Stack and Azure provides the foundations
VMs provide the initial unit of computation for management purposes
Windows Server and Linux provide the OS for those VMs and allow BYO management software
Today we offer containers, managed by Docker compatible Container tooling
The infrastructure is hand crafted using ARM templates
Azure Container Services will ease the management of 1st and 3rd party container technologies
We are taking a layered approach to providing these services
Azure Stack and Azure provides the foundations
VMs provide the initial unit of computation for management purposes
Windows Server and Linux provide the OS for those VMs and allow BYO management software
Today we offer containers, managed by Docker compatible Container tooling
The infrastructure is hand crafted using ARM templates
Azure Container Services will ease the management of 1st and 3rd party container technologies
We are taking a layered approach to providing these services
ACS says nothing about the application layer, you are portable here
ACS uses only open source at the management layer and we provide choice. We optimize for portability.
ACS is not portable at the infrastructure layer, we optimize for Azure. Azure Stack is coming, which will provide more options, but since our orchestration layer is open source you can host always host elsewhere.
Using Portal
Key message: we take away all the complexity and make it a simple set of parameters. After that it is IaaS with open source software installed
Key message: Once the infrastructure is up and running your applications are just Docker Containers, with all available tooling you normally use.
On rgdev box
cd ~/projects/acs-demos/demo_scripts/dockercon2016
ssh -N -L 2375:localhost:2375 azureuser@rgacsdcmgmt.westus.cloudapp.azure.com -p 2200 &
export DOCKER_HOST=:2375
docker info
docker-compose up –d
docker-compose ps
Clean Up
docker-compose scale producer=1
docker-compose stop
docker stop $(docker ps –a)
Key message: our open API for standing up the infrastructure means you can use any tool to create your cluster and then manage your workloads on that cluster
Server: http://13.91.0.150/jenkins
Docker containers running in 2 VMs in Azure – deployed through template
Each container is assigned an IP address from the Virtual Network
Direct communication between VMs using private IPs (no encapsulation/port re-use)
Leverage Azure SDN stack (NSG) to set container specific ACL
Demonstrate the ACLing taking effect
Stretch: Show container talking to on-premises using Azure SDN.
Show existing resource group in portal.azure.com that comprises my small cluster – “already deployed using ARM template”
1 master
2 agents
Existing SQL Azure instance - "production ready, designed for Azure cloud, so I'll use it"
"This is the same Swarm you're used to"
Bring up plink w/ port forwarding
"Swarm master running in Azure"
Docker info - point out Windows hosts
Conveniently mapped a local port
$ENV:DOCKER_HOST=":2375"
Run docker info on the laptop
Let's deploy an app across the nodes
Docker-Compose build
Docker-compose scale web=2
Open http://flatwhite.westus.cloudapp.azure.com
http://flatwhite.westus.cloudapp.azure.com/MusicStore
And of course, it's still Windows
Mstsc /v:flatwhite.westus.cloudapp.azure.com
"If you want it, the familiar Windows admin experience is available"
Key message: Since the cluster is “just Docker” you can use any tooling in the cluster you like, for example monitoring can be done with any of …, …
http://104.41.133.84:8080/containers/
https://app.datadoghq.com/account/login?next=%2Fevent%2Fstream
https://azurecon-containers.portal.mms.microsoft.com/#Workspace/overview/Containers/details/index?_timeInterval.intervalDuration=86400