Table of Contents

About

A container is the logical OS equivalent of a process in a virtual environment.

They share:

  • an operating system installed on the server
  • and run resource-isolated (Each container has isolated environment within the same physical OS)

They are also known as lightweight VM because they share an operating system while real virtualization vm have a full-fledged OS inside host OS.

Containers provide a way to package your application's code, configurations, and dependencies into a single object.

It's a kind of very sophisticated and advanced chroot 1).

Software

Container

Build

DockerFile

To build a docker image, you can use a DockerFile. It will have all build steps.

Build pack

A buildpack is a program that turns source code into a runnable container image.

Server

Cloud

Aws Lambda for containers vs Cloud run

The new “AWS Lambda for Containers” is basically Google Cloud Run –except you still have to implement the “runtime API” or use the limited 'supported' images. This is exactly why Cloud Run is _really_ good: I can bring any HTTP server container and not worry about the rest.

Another huge difference: a Lambda runs one request at a time, and you’re charged for each. On Cloud Run, a single instance can handle 80 requests (soon more) simultaneously, and you don't pay for them separately. Makes a huge price difference.

https://twitter.com/ahmetb/status/1333832362363273216?s=21

Orchestration

Orchestration services on a server helps to build and run containerized applications. See Orchestration

Specification

Advantages

  • Smaller than Virtual Machines: Because images (container on disk) contain only the content needed to run an application (and not always an entire operating systems)
  • Improved performance: Likewise, since you are not running an entirely separate operating system, a container will typically run faster than an application that carries with it the overhead of a whole new virtual machine.
  • Secure: Because a container typically has its own network interfaces, file system, and memory, the application running in that container can be isolated and secured from other activities on a host computer.
  • Multiple environments: With an application’s run time requirements included with the application in the container, a container is capable of being run in multiple environments (Windows, Linux, …)