« Atomic » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
(Page créée avec « == Atomic == === Présentation === L'éditeur de RHEL prévoit d'ajouter des outils Linux avancés, tels que systemd et SELinux, à la technologie de containers Docker. R... »)
 
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 22 : Ligne 22 :


Red Hat n'est pas le seul à s'enthousiasmer pour Docker parmi les promoteurs de Linux. La dernière version d'Ubuntu, la distribution de Canonical, qui doit être livrée ce jeudi, contient aussi Docker.
Red Hat n'est pas le seul à s'enthousiasmer pour Docker parmi les promoteurs de Linux. La dernière version d'Ubuntu, la distribution de Canonical, qui doit être livrée ce jeudi, contient aussi Docker.
== Utilisation ==
=== Mise à jour et setup de l'appliance qemu ===
Mise à jour
<syntaxhighlight lang="bash">
rpm-ostree upgrade
systemctl reboot
</syntaxhighlight>
Setup du nom d'hôte
<syntaxhighlight lang="bash">
hostnamectl set-hostname atomic.didier.b2pweb.com
</syntaxhighlight>
=== On construit d'un container from scratch ===
# On charge le container officiel centos
# On met le système à jour
# On installe Apache
# On place les fichiers du site contenu dans une archive tar
# On empaquète le tout dans un container docker
Fichier Dockerfile
<pre>
FROM centos
MAINTAINER Didier Fabert, email: didier.fabert@gmail.com
# Update the image with the latest packages (recommended)
RUN yum update -y; yum clean all
# Install Apache Web Server
RUN yum install -y httpd; yum clean all
# Add the tar file of the web site
ADD ./test.tar /tmp/
# Docker automatically extracted. So move files to web directory
RUN mv /tmp/test/* /var/www/html
EXPOSE 80
ENTRYPOINT /usr/sbin/httpd -DFOREGROUND
</pre>
Construction du container à partir du fichier Dockerfile.
<syntaxhighlight lang="bash">
cd docker/gear-test
docker build --rm --tag=testsite .
</syntaxhighlight>
Lancement avec gear
<syntaxhighlight lang="bash">
gear install testsite html -p 80:0 --start
</syntaxhighlight>
On peut vérifier que le container est actif
<syntaxhighlight lang="bash">
systemctl status ctr-html.service
ctr-html.service - Container html
  Loaded: loaded (/var/lib/containers/units/ht/ctr-html.service; enabled)
  Active: active (running) since Mon 2014-05-19 11:55:04 UTC; 22s ago
  Process: 1184 ExecStartPost=/usr/bin/gear init --post html testsite (code=exited, status=0/SUCCESS)
  Process: 1174 ExecStartPre=/usr/bin/docker rm html (code=exited, status=1/FAILURE)
  Process: 1120 ExecStartPre=/bin/sh -c /usr/bin/docker inspect --format="Reusing {{.ID}}" "html-data" || exec docker run --name "html-data" --volumes-from "html-data" --entrypoint true "testsite" (code=exited, status=0/SUCCESS)
Main PID: 1183 (docker)
  CGroup: /container.slice/container-small.slice/ctr-html.service
          └─1183 /usr/bin/docker run --rm --name html --volumes-from html-data -a stdout -a stderr -p 4000:80 test...
May 19 11:55:01 atomic.b2pweb.com systemd[1]: Starting Container html...
May 19 11:55:01 atomic.b2pweb.com sh[1120]: Error: No such image or container: html-data
May 19 11:55:02 atomic.b2pweb.com docker[1174]: Error: No such container: html
May 19 11:55:02 atomic.b2pweb.com docker[1174]: 2014/05/19 11:55:02 Error: failed to remove one or more containers
May 19 11:55:02 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:02 user: unknown user ctr-html
May 19 11:55:04 atomic.b2pweb.com docker[1183]: httpd: Could not reliably determine the server's fully qualifie...Name
May 19 11:55:04 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:04 docker: execution driver native-0.1
May 19 11:55:04 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:04 Updating network namespaces for 1215
May 19 11:55:04 atomic.b2pweb.com systemd[1]: Started Container html.
Hint: Some lines were ellipsized, use -l to show in full.
</syntaxhighlight>
On obtient le nom des container actif avec gear. Il faut préfixé le nom du unit avec *ctr-* pour l'utiliser avec systemctl
<syntaxhighlight lang="bash">
gear list-units
You can also display the set of containers via 'systemctl list-units'
2014/05/19 11:55:13 local execute *jobs.ListContainersResponse
ID      SERVER  ACTIVE  SUB    LOAD    TYPE
html            active  running loaded
</syntaxhighlight>

Dernière version du 19 mai 2014 à 16:08

Atomic

Présentation

L'éditeur de RHEL prévoit d'ajouter des outils Linux avancés, tels que systemd et SELinux, à la technologie de containers Docker.

Red Hat fait progresser Docker, le projet de container d'applications Linux. Celui-ci permet de créer à partir de n'importe quelle application des containers légers, portables et « autosuffisants » qui peuvent fonctionner virtuellement partout, sur des machines virtuelles, des serveurs bare-metal, des clusters OpenStack, des instances publiques ou sur une combinaison de ces différents environnements, explique le site du projet Open Source. A l'occasion du Red Hat Summit (San Francisco, du 14 au 17 avril), Paul Cormier, président de la société, responsable des produits et de la technologie, a expliqué que les containers permettaient de rationaliser le mouvement des applications vers le cloud.

L'éditeur de logiciel Open Source pour l'entreprise prévoit de livrer une variante de sa distribution Linux RHEL adaptée pour exploiter Docker de façon optimisée. Il a aussi démarré deux projets communautaires pour que Docker puisse tirer parti des nouvelles technologies dans le noyau Linux et dans l'écosystème.

Project Atomic pour simplifier la maintenance

Docker permet d'exploiter une application à travers différentes distributions Linux. Il a suscité beaucoup d'intérêt depuis son lancement il y a un an. Comme les machines virtuelles, les containers Docker peuvent être facilement déplacés entre différents serveurs Linux sans avoir besoin d'être reconfigurés. Mais au contraire des VM qui tournent sur des hyperviseurs, un container Docker utilise l'OS du serveur ce qui améliore les performances. Cela réduit aussi le volume de maintenance nécessaire puisque qu'il y a moins d'OS à patcher et à gérer dans un environnement container.

La nouvelle initiative communautaire de Red Hat, dénommée Project Atomic, va se concentrer sur la simplification de la maintenance, la réduction de l'encombrement et l'ajout de couches de vérification et de contrôle additionnelles pour les containers Docker. Des technologies Linux avancées seront utilisées telles que le gestionnaire de services systemd (system daemon, qui gère la dépendance entre services) et le module de sécurité SELinux (Security Enhanced Linux) qui permet de définir une politique de contrôle d'accès. Red Hat va intégrer le travail du groupe Project Atomic dans une variante de RHEL qui s'appellera Red Hat Enterprise Linux Atomic Host. La distribution sortira parallèlement à RHEL 7. Certains clients pourront le tester avant la livraison de ce dernier.

GearD, un projet pour porter Docker dans OpenShift Origin

Le deuxième projet communautaire, GearD, s'attachera à porter Docker dans le logiciel d'hébergement PaaS de Red Hat, OpenShift Origin. Il se focalisera sur les moyens d'intégrer les containers applicatifs avec des outils de gestion du code tels que Git. Il cherchera aussi comment orchestrer du mieux possible la gestion et les mouvements des containers entre plusieurs systèmes hôtes.

Docker / Red Hat GearD

Geard intervient comme agent sur chaque système hôte pour installer les containers Docker dans systemd et supporter les changements de configuration.

Red Hat n'est pas le seul à s'enthousiasmer pour Docker parmi les promoteurs de Linux. La dernière version d'Ubuntu, la distribution de Canonical, qui doit être livrée ce jeudi, contient aussi Docker.

Utilisation

Mise à jour et setup de l'appliance qemu

Mise à jour

rpm-ostree upgrade
systemctl reboot

Setup du nom d'hôte

hostnamectl set-hostname atomic.didier.b2pweb.com

On construit d'un container from scratch

  1. On charge le container officiel centos
  2. On met le système à jour
  3. On installe Apache
  4. On place les fichiers du site contenu dans une archive tar
  5. On empaquète le tout dans un container docker

Fichier Dockerfile

FROM centos

MAINTAINER Didier Fabert, email: didier.fabert@gmail.com

# Update the image with the latest packages (recommended)
RUN yum update -y; yum clean all

# Install Apache Web Server
RUN yum install -y httpd; yum clean all

# Add the tar file of the web site
ADD ./test.tar /tmp/

# Docker automatically extracted. So move files to web directory
RUN mv /tmp/test/* /var/www/html

EXPOSE 80

ENTRYPOINT /usr/sbin/httpd -DFOREGROUND

Construction du container à partir du fichier Dockerfile.

cd docker/gear-test
docker build --rm --tag=testsite .

Lancement avec gear

gear install testsite html -p 80:0 --start

On peut vérifier que le container est actif

systemctl status ctr-html.service

ctr-html.service - Container html
   Loaded: loaded (/var/lib/containers/units/ht/ctr-html.service; enabled)
   Active: active (running) since Mon 2014-05-19 11:55:04 UTC; 22s ago
  Process: 1184 ExecStartPost=/usr/bin/gear init --post html testsite (code=exited, status=0/SUCCESS)
  Process: 1174 ExecStartPre=/usr/bin/docker rm html (code=exited, status=1/FAILURE)
  Process: 1120 ExecStartPre=/bin/sh -c /usr/bin/docker inspect --format="Reusing {{.ID}}" "html-data" || exec docker run --name "html-data" --volumes-from "html-data" --entrypoint true "testsite" (code=exited, status=0/SUCCESS)
 Main PID: 1183 (docker)
   CGroup: /container.slice/container-small.slice/ctr-html.service
           └─1183 /usr/bin/docker run --rm --name html --volumes-from html-data -a stdout -a stderr -p 4000:80 test...

May 19 11:55:01 atomic.b2pweb.com systemd[1]: Starting Container html...
May 19 11:55:01 atomic.b2pweb.com sh[1120]: Error: No such image or container: html-data
May 19 11:55:02 atomic.b2pweb.com docker[1174]: Error: No such container: html
May 19 11:55:02 atomic.b2pweb.com docker[1174]: 2014/05/19 11:55:02 Error: failed to remove one or more containers
May 19 11:55:02 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:02 user: unknown user ctr-html
May 19 11:55:04 atomic.b2pweb.com docker[1183]: httpd: Could not reliably determine the server's fully qualifie...Name
May 19 11:55:04 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:04 docker: execution driver native-0.1
May 19 11:55:04 atomic.b2pweb.com gear[1184]: 2014/05/19 11:55:04 Updating network namespaces for 1215
May 19 11:55:04 atomic.b2pweb.com systemd[1]: Started Container html.
Hint: Some lines were ellipsized, use -l to show in full.

On obtient le nom des container actif avec gear. Il faut préfixé le nom du unit avec *ctr-* pour l'utiliser avec systemctl

gear list-units

You can also display the set of containers via 'systemctl list-units'
2014/05/19 11:55:13 local execute *jobs.ListContainersResponse
ID      SERVER  ACTIVE  SUB     LOAD    TYPE
html            active  running loaded