Return to page

H2O.ai WIKI

Containers

What are containers?

A container is a standard unit of software that packages up code and all its dependencies for use across different computing environments. A host can run various containers simultaneously. Most developer containers offer a new way to build and deploy portable cloud applications and a new way to deploy applications that incorporate machine learning.

How do containers work?

A container encapsulates an application as a single software executable package containing all the configuration files, libraries, and dependencies. Its networks are based on software platforms, such as Docker, that can be run in the cloud. As such, you can ship full operating systems and your software. You can even pack your code into a container that can run anywhere -- making it more efficient since they are self-contained.

Examples of containers

Below are two examples of containers:

Continuous integration and delivery

The use of containers reduces the number of variables developers must manage when moving between development, test, and production environments. As a result, containers virtualize the operating system and can run anywhere from a private data center to the public cloud or on a developer's laptop.

Legacy applications

The majority of companies in aged industries have a few legacy applications that have lasted through the years. With the introduction of containers, packages of software contain all of the necessary elements to run in any environment. Cloud computing providers, such as Amazon Web Services, Microsoft Azure, and Google Cloud Platform, have adopted container technology, with popular choices such as Docker, Apache Mesos, rkt (pronounced rocket), and Kubernetes.

Why are containers important?

Below are two reasons why containers are essential:

1. Speed

Using containers can remove technical roadblocks between development and deployment. This problem is solved by compartmentalizing applications using microservices, allowing even the most extensive application to be broken into discrete parts.

One of the factors that can cause significant delays is neglecting or not understanding technical dependencies when creating a new application. As a result, there is a fundamental conflict between the missions of the development and operations teams that slows down the process of moving an application from development to production.

Rather than segmenting large applications into containers, microservices isolate smaller pieces so developers can implement changes and deploy code much easier with this division. Isolated areas of the application can be changed without affecting the whole, which will help developers work faster and more efficiently.

2. Efficient

Containerization is one of the most efficient methods of virtualization available to developers. Efficiency is improved in two ways: by using all available resources and minimizing overhead. Your applications do not require a separate operating system with containerization --  as a result, containers are more energy-efficient. Containers can take advantage of virtually all the resources available on a host, and isolated containers can perform their operations without interfering, allowing a single host to handle numerous tasks. In addition, containers have a high level of utilization. This makes them more efficient and simplifies your regulatory compliance while reducing your costs.

H2O AI Cloud and Containers: AI Platform

H2O AI Cloud and Containers

Kubernetes Init Containers: A common use case is to have certain files or drivers accessible on the filesystem of Driverless AI or H2O-3 pod.

The recommended approach is to use regular Kubernetes init containers. These containers are executed before the main container is executed and can be used to copy or download files to the filesystem.

Read More

Container vs. Other Technologies & Methodologies

Container vs. Virtual Machines

Virtual machines and containers are both resource virtualization technologies. Containers are different from virtual machines in that they provide a method of virtualizing an OS so that multiple workloads can run on a single OS instance. In virtual machines, the hardware is virtualized to run multiple OS instances. Similar to virtual machines, containers allow developers to better use physical machines’ CPUs and memory. Microservice architectures, where application components can be deployed and scaled more granularly, are also enabled by containers.