BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Container-based software development has been a seriously disruptive force in the IT world over the past 12 to 18 months. Be it the use of Java's bytecode interpreter or VMWare's OS images, visualization is nothing new to the IT community. Despite the ubiquitous familiarity with the concept, there seems to be a disproportionate amount of positive enthusiasm for the approach that the Docker Engine and containers in general are taking to create truly portable applications through virtualization.
"Java gave us WORA, write once run anywhere," Java champion Arun Gupta says. "Containers give us PORA, package once, run anywhere." Contrasting container-based virtualization against the visualization of entire operating systems, as is so popular with solutions like Amazon's E2C and VMWare, Gupta explains that many of the low-level configurations that are required with full OS images are not required when working with a container. "Just like Java has a virtual machine, Docker has the Docker Engine that understands the Docker image," Gupta says. "With the Docker Engine you can just take a Docker image and run it wherever you want to run it."
The impact of these Docker Engines, which create portable applications that can be easily deployed and run in a variety of different environments, is significant. For most organizations, there is always a divergence between how the production environment is configured and how the local development environment is set up. That's just a reality most DevOps teams have to grapple with, and it's a reality that can cause no end of consternation when problems appear in a staging environment that can't be replicated either on development machines or in production.
But the idea behind the Docker Engine is that a program's execution environment can be completely replicated in each step of the software development lifecycle. The result is that the exact same container-based application is running in all development, testing, staging and production environments. This type of development and deployment architecture simplifies many aspects of DevOps and application lifecycle management.
To learn more about containers and how they are impacting modern software development, watch the full video with Arun Gupta and TheServerSide's Cameron McKenzie.
How has Docker and other container engines simplified your development process? Let us know.
Who is using Docker and why container-based dev is taking off
How containerization might mark the decline of virtualization
Moving past virtualization tools with DevOps containers
Do virtualization and JVM negate CPU and system knowledge?