====== Différences ======

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

docker:intro [2019/05/11 14:35] (Version actuelle)
Ligne 1: Ligne 1:
  
 +====== Docker ======
 +
 +Docker (présenté ici‐même la semaine dernière) est un logiciel à mi‐chemin entre la virtualisation applicative et l’automatisation.
 +Il a l’avantage de ne virtualiser que la partie application et pas du tout la partie système ni le noyau.
 +Il étend le principe des conteneurs Linux (LXC).
 +
 +
 +{{:​docker:​docker.png?​200|}}
 +
 +Docker Inc. (anciennement Dotcloud) qui développe Docker, propose aussi un système minimaliste (CoreOS), Docker pouvant virtualiser aussi bien une application qu'un système complet. NdM : comme signalé dans un commentaire,​ Docker Inc. n'est pas à l'​origine de CoreOS, qui est géré par CoreOS, Inc.
 +
 +    Le blog à l’origine de la dépêche (946 clics)
 +    Le site officiel de Docker (463 clics)
 +    La documentation de Docker (293 clics)
 +    Le dépôt officiel de Docker (163 clics)
 +
 +===== Installation (Debian/​Ubuntu) =====
 +
 +Créer le fichier /​etc/​apt/​sources.list.d/​docker.list et écrire ça dedans :
 +<​code=bash>​
 +deb http://​get.docker.io/​ubuntu docker main
 +</​code>​
 +Télécharger la clé GPG et installer le paquet :
 +<​code=bash>​
 +apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
 +apt-get update
 +apt-get install lxc-docker
 +</​code>​
 +===== Manipulation d’images =====
 +
 +
 +Prendre une Debian sur le dépôt officiel de Docker et se connecter dessus :
 +<​code=bash>​
 +docker pull debian
 +docker run -i -t debian /bin/bash
 +</​code>​
 +Faire tout ce qu’on veut sur la nouvelle image
 +<​code=bash>​
 +root@xxxxxx#​ ...
 +
 +Et </​code>​sauvegarder les changements
 +<​code=bash>​
 +root@xxxxxx#​ exit
 +docker commit xxxxxx le_nom_de_l_image
 +</​code>​
 +Supprimer les images :
 +<​code=bash>​
 +docker rmi id_ou_nom_de_l_image
 +</​code>​
 +===== Création d’images par Dockerfile =====
 +
 +Les principales directives des fichiers Dockerfiles :
 +
 +    MAINTAINER : nom et courriel de mainteneur du conteneur ;​
 +    FROM : image de base (Ubuntu, Debian) ;
 +    VOLUME : point de montage ;
 +    RUN : commande à exécuter pour installer le conteneur ;​
 +    ENTRYPOINT : commande qui s’exécute au démarrage du conteneur (une seule sera exécutée) ;​
 +    CMD : commande qui s’exécute au démarrage du conteneur ;​
 +    ADD : copier un fichier du répertoire courant dans le système de fichiers du conteneur ;​
 +    USER : utilisateur qui exécute les commandes dans le conteneur ;​
 +    EXPOSE : port(s) à exposer à l’extérieur.
 +
 +===== Manipuler un conteneur =====
 +<​code=bash>​
 +JOB1=$(docker run -d conteneur)
 +docker logs $JOB1
 +docker stop $JOB1
 +
 +Voir les conteneurs qui tournent :
 +<​code=bash>​
 +docker ps
 +
 +ou
 +<​code=bash>​
 +docker ps -a
 +
 +Supprimer un ou tous les conteneurs :
 +<​code=bash>​
 +docker rm $JOB1
 +docker rm id_du_conteneur
 +docker rm `docker ps -a -q`
 +
 +Construire un conteneur
 +
 +Créer un fichier nommé Dockerfile avec les directives Docker, puis :
 +<​code=bash>​
 +docker build -t nom_du_conteneur .
 +
 +Exemple de Dockerfile : LAMP - MariaDB
 +Dockerfile
 +<​code=bash>​
 +# lamp (d'un M qui veut dire Maria)
 +# Pour Debian Wheezy
 +#
 +# VERSION 0.0.1
 +#
 +
 +FROM debian:​wheezy
 +MAINTAINER Nico Dewaele "​nico@adminrezo.fr"​
 +
 +ENV DEBIAN_FRONTEND noninteractive
 +
 +# Depots, mises a jour et installs de Apache/PHP5
 +
 +RUN echo "deb http://​ftp.fr.debian.org/​debian/​ wheezy main non-free contrib"​ > /​etc/​apt/​sources.list
 +RUN (apt-get update && apt-get upgrade -y -q && apt-get dist-upgrade -y -q && apt-get -y -q autoclean && apt-get -y -q autoremove)
 +RUN apt-get install -y -q vim ssh supervisor python-software-properties apache2 libapache2-mod-php5 php5-cli php5-mysql
 +
 +# Installation et configuration de MariaDB
 +
 +RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
 +RUN add-apt-repository 'deb http://​mirrors.linsrv.net/​mariadb/​repo/​5.5/​debian wheezy main'
 +RUN apt-get update && apt-get install -y mariadb-server
 +RUN service mysql start
 +RUN mysql -v -uroot -e'​UPDATE user SET host = "​%"​ WHERE user = "​root"​ LIMIT 1; DELETE FROM user WHERE user = "​root"​ AND host != "​%"'​ mysql
 +RUN service mysql stop
 +
 +# Config de Apache
 +
 +ADD foreground.sh /​etc/​apache2/​foreground.sh
 +ENV APACHE_RUN_USER www-data
 +ENV APACHE_RUN_GROUP www-data
 +ENV APACHE_LOG_DIR /​var/​log/​apache2
 +
 +# Verification de PHP
 +
 +ADD index.php /​var/​www/​index.php
 +#RUN rm /​var/​www/​index.html
 +
 +# Demarrage des services
 +
 +RUN mkdir -p /​var/​log/​supervisor
 +ADD supervisord.conf /​etc/​supervisor/​conf.d/​supervisord.conf
 +ADD start.sh /start.sh
 +
 +EXPOSE 80 22
 +# Si MariaDB doit être exposée à l'​extérieur
 +# EXPOSE 3306
 +
 +CMD ["/​bin/​bash",​ "​-e",​ "/​start.sh"​]
 +
 +foreground.sh
 +
 +#!/bin/bash
 +
 +read pid cmd state ppid pgrp session tty_nr tpgid rest < /​proc/​self/​stat
 +trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT
 +
 +source /​etc/​apache2/​envvars
 +apache2 -D FOREGROUND
 +
 +start.sh
 +
 +#!/bin/bash
 +supervisord
 +
 +supervisord.conf
 +
 +[supervisord]
 +nodaemon=true
 +
 +[program:​sshd]
 +command=/​usr/​sbin/​sshd -D
 +stdout_logfile=/​var/​log/​supervisor/​%(program_name)s.log
 +stderr_logfile=/​var/​log/​supervisor/​%(program_name)s.log
 +autorestart=true
 +
 +[program:​httpd]
 +command=/​usr/​sbin/​apache2ctl start
 +stopsignal=6
 +
 +[program:​mariadb]
 +command=/​usr/​sbin/​mysqld
 +stdout_logfile=/​tmp/​%(program_name)s.stdout
 +stderr_logfile=/​tmp/​%(program_name)s.stderr
 +stopsignal=6
 +
 +</​code>​
 
docker/intro.txt · Dernière modification: 2019/05/11 14:35 (modification externe)     Haut de page