Chapitre 11. Linux Containers

The Docker project is an open-source project that automates the deployment of applications inside Linux Containers, and provides the capability to package an application with its runtime dependencies into a container. It provides a command-line tool for the life cycle management of image-based containers. Linux containers enable rapid application deployment, simpler testing, maintenance, and troubleshooting while improving security. Using Red Hat Enterprise Linux 7 with containers allows customers to increase staff efficiency, deploy third-party applications faster, enable a more agile development environment, and manage resources more tightly.
To quickly get up-and-running with docker formatted containers, refer to Get Started with docker Formatted Containers.
Red Hat Enterprise Linux 7.1 ships with docker version 1.4.1, which includes a number of new features, security fixes, patches and changes. Highlights include:
  • The ENV instruction in the Dockerfile now supports arguments in the form of ENV name=value name2=value2 ...
  • An experimental overlayfs storage driver has been introduced.
  • An update is included for CVE-2014-9356: Path traversal during processing of absolute symlinks. Absolute symlinks were not adequately checked for traversal which created a vulnerability via image extraction and/or volume mounts.
  • An update is included for CVE-2014-9357: Escalation of privileges during decompression of LZMA (.xz) archives. Docker 1.3.2 added chroot for archive extraction. This created a vulnerability that could allow malicious images or builds to write files to the host system and escape containerization, leading to privilege escalation.
  • An update is included for CVE-2014-9358: Path traversal and spoofing opportunities via image identifiers. Image IDs passed either via docker load or registry communications were not sufficiently validated. This created a vulnerability to path traversal attacks wherein malicious images or repository spoofing could lead to graph corruption and manipulation.
Red Hat provides platform container images for building applications on both Red Hat Enterprise Linux 6 and Red Hat Enterprise Linux 7.
Red Hat fournit également Kubernetes pour une utilisation lors de l'orchestration des conteneurs. Pour obtenir des informations supplémentaires sur Kubernetes, veuillez consulter Get Started Orchestrating Docker Containers with Kubernetes.
Linux containers are supported running on hosts with SELinux enabled. SELinux is not supported when the /var/lib/docker directory is located on a volume using the B-tree file system (Btrfs).

11.1. Components of docker Formatted Containers

The docker container format works with the following fundamental components:
  • Conteneur – application bac à sable. Chaque conteneur est basés sur une image contenant les données de configuration nécessaires. Lorsque vous lancez un conteneur à partir d'une image, une couche inscriptible est ajoutée sur cette image. Chaque fois que vous effectuez une commande commit sur un conteneur (avec la commande docker commit), un nouvelle couche d'image est ajoutée pour stocker vos modifications.
  • Image – instantané statique de la configuration des conteneurs. Une image est une couche en lecture seule qui n'est jamais modifiée. Tous les changements sont effectués sur la couche inscriptible la plus haute, et peuvent uniquement être enregistrés en créant une nouvelle image. Chaque image dépend d'une ou plusieurs image(s) parente(s).
  • Platform Container Image – an image that has no parent. Platform container images define the runtime environment, packages, and utilities necessary for a containerized application to run. The platform image is read-only, so any changes are reflected in the copied images stacked on top of it. See an example of such stacking in Figure 11.1, « Mise en couche d'image à l'aide du format Docker ».
  • Registre – référentiel d'images. Les registres sont des référentiels publiques ou privés qui contiennent des images disponibles pour téléchargement. Certains registres permettent aux utilisateurs de téléverser des images afin de les mettre à disponibilité pour d'autres utilisateurs.
  • Dockerfile – fichier de configuration avec des instructions de création pour les images Docker. Les Dockerfiles offrent une manière d'automatiser, de réutiliser et de partager des procédures de création.
Mise en couche d'image à l'aide du format Docker

Figure 11.1. Mise en couche d'image à l'aide du format Docker