Operating system containers are not a new concept, but today’s Linux containers have changed modern application delivery and deployment. Popular Linux containers, including Docker, and the cloud create powerful new opportunities for developers and development processes to take the idea of “write once, deploy anywhere” to a new level. Oracle Magazine caught up with Mike Lehmann, vice president of product management for Oracle Cloud Platform Development, to discuss containers, developer speed, infrastructure as a service (IaaS) for developers, and more.
Oracle Magazine: What are containers, and how are they part of cloud-native development?
Lehmann: Containers have been around operating system technology for many years, but modern containers have become popular in the last several years as a result of two things. The first is that Linux, with a fast-maturing Linux Container layer, emerged as a dominant cloud operating system, and the second is that the open source Docker packaging and tooling model became hugely successful in the last two to three years. Simultaneously, traditional hypervisor-based virtualization technologies were being seen as heavyweight and not naturally aligned with modern lightweight cloud-native development trends.
The difference between a modern container, such as a Docker container—the dominant container technology today—and a virtual machine is that a virtual machine generally includes a guest operating system and associated operating system drivers. And as a result, it’s not only the application binaries that you’re running on the virtual machine but also the guest operating system, and the combined result is fairly heavyweight to both start and move around between environments.
With the move to modern container technologies, a container uses a shared OS or shared kernel underneath, and really what you’re packaging, moving around, and starting in a container are just the application and the binaries.
The containerization movement itself is an open source movement with a very broad and rich open source community contributing and building out containerization technologies.”
Cloud-native development focuses on lighter-weight technologies and more-agile methods for delivering applications, such as microservices, DevOps, and containers. And helping with cloud-native application delivery, standardized tooling and APIs for Docker containers make it easy to create, package, and deliver them in modern DevOps pipelines.
Another benefit of containers in cloud-native development is the consistency of having the identical environment available across both what the developer builds and delivers as well as the deployment environment. That consistency across environments means you can have a much quicker release cycle, because each stage uses a standard, immutable representation of the application to validate against.
Oracle Magazine: Speaking of the speed of release cycles, in addition to the consistency you mentioned, how—directly—do containers affect the speed of application development and deployment?
Lehmann: When developers build containers, often they are not building an entire container but simply adding image layers to a base canonical container. This supports a process for quickly building more-complex containers from base containers and moving them into the continuous integration and delivery pipeline.
Beyond deploying a single container and seeing that it starts and deploys very fast, there are also orchestration tools for managing containers at scale—enabling a DevOps team to manage large-scale farms of containers across their infrastructures. There is a rich set of emerging technologies in this space, including Kubernetes, Apache Mesos, and Docker Swarm. These tools have helped transition Docker from being a great development and test technology for cloud-native applications to being a large-scale deployment platform for modern applications.
Oracle Magazine: How do containers work with different infrastructure and platform technologies, frameworks, and programming languages?
Lehmann: Container technologies, such as Docker, live in the larger IaaS ecosystem. A container needs networking infrastructure to communicate with other containers. A container needs to access storage. IaaS providers, including Oracle, provide the baseline compute, networking, and storage, and containers are the next level of infrastructure abstraction leveraging those baseline layers.
Standardized tooling and APIs for Docker containers make it easy to create, package, and deliver them in modern DevOps pipelines.”
The containerization movement itself is an open source movement with a very broad and rich open source community contributing and building out containerization technologies. Docker itself is a commercial enterprise, but the core technology is developed as open source.
Within this ecosystem, most popular open source application development frameworks, runtimes, and databases provide Docker containers via Docker Hub or Docker Store. Node, PHP, Ruby, Cassandra—you name it; they are all available. At the same time, Docker has become the de facto distribution platform for building open source applications.
Companies such as Oracle and other commercial vendors also make their commercial software available via Docker containers. Oracle recently worked with Docker to make database images and middleware images such as the Java Virtual Machine, Oracle WebLogic Server, Oracle Coherence, and even Oracle Tuxedo available in Docker Store as container images.
Oracle Magazine: What are Oracle’s cloud services for working with containers?
Lehmann: Oracle supports three levels of deployment infrastructure where people can utilize or leverage container technologies. The first is the basic IaaS, so you can bring your own container technology and your own scheduling and orchestration framework. If you like Docker and Kubernetes or you like Docker and Apache Mesos, you can bring that technology onto Oracle IaaS and roll your own deployment infrastructure.
The next level up is Oracle Container Cloud Service. This is a managed container service on Oracle Cloud that gives you built-in orchestration scheduling of Docker containers. The service lets you set up multiple distributed environments across your compute capacity and deploy containers. It includes powerful features such as stacks, which let you compose containers into groups so you can have a collection of containers that represent a more complex application. For example, one could create a stack consisting of a cluster of Java microservice containers with a multicontainer Redis cluster back end.
The next level up is Oracle Application Container Cloud, and it’s more of a development environment for building microservices. It lets you build out small microservices on a language of your choice—Java, PHP, Node, or another language—following a 12-Factor model of development.
In addition to this container support, Oracle offers one more service for teams building Docker-based applications, and that is Oracle Developer Cloud Service. The service supports developer collaboration, agile tools, source code management, and continuous integration and delivery tooling.
Oracle also recently announced an agreement to purchase Wercker, a Docker lifecycle automation cloud company that enables developers to completely automate the continuous integration and delivery of Docker containers for container-centric and cloud-native applications.
These are exciting times for developers working with Docker containers and Oracle Cloud.
LEARN more about Oracle Cloud IaaS.
EXPLORE the Oracle developer portal.
Photography by Glenn Carstens-Peters,Unsplash