Docker-CE : Installation et configuration

docker-ce-alt docker-ce

Docker-CE

Docker-CE est un logiciel d’encapsulation d’applications permettant de cloisonner les programmes, de les rendre portables et de lancer des groupes de containers, grâce au docker-compose.

Cette procédure va couvrir l’installation et la configuration en vue de son utilisation dans d’autres procédures.

La mention CE signifie que c’est la Community Edition, disponible gratuitement, contrairement à l’edition PRO qui elle est payante mais regorge de plus d’options et bénéficie d’un support utilisateur.

 

L’installation sur une Ubuntu 16.04 64bits:

On met à jour le magasin APT :

apt-get update

On installe les dépendances :

apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

On installe

apt-get install apt-transport-https ca-certificates curl software-properties-common

On installe la clé GPG afin d’authentifier le dépôt sur notre machine hôte :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

On ajoute le dépôt à la liste des dépôts sur la machine hôte, afin de permettre à APT de venir piocher à cet endroit, qu’on à préalablement authentifié (ci-dessus) :

 

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ; apt-get update ; apt-get install docker-ce

Tous les composants sont maintenant installés, vous pouvez donc maintenant commencer à l’utiliser en vous basant sur ce lexique des commandes les plus utiles.

Les procédures liées

En suivant ce lien vous serez redirigé vers la page des articles concernant Docker, comme l’installation d’Apache2, XMPP ou encore PostFix/DoveCot/Roundcube.

L’utilisation de Docker pour faire tourner ces logiciels est en grande partie du à sa simplicité d’utilisation et sa manière unique de gérer les containers.

Docker permet, grâce à une configuration adéquate, de configurer un environnement de développement complet seulement à partir d’un fichier texte DockerFIle.

 

Les commandes utiles

Pour maîtriser Docker, il va falloir apprendre quelques commandes.

Cette commande permet de lancer un container soit depuis le dépôt local (mis en cache), soit de le télécharger depuis les dépôts officiels.

docker run <nomducontainer> <commande>

Si l’image demandée n’existe pas en local, le logiciel ira chercher l’image sur les dépôts, mais on verra plus loin dans cette procédure, comment installer et configurer un dépôt sur un réseau local, ce qui permettra de privatiser et également d’économiser de la bande passante surtout en liaison montante.

La deuxième commande permet de lancer un ‘apt-get update’ dans l’environnement du container. On peut bien entendu remplacer cette commande par une autre, ou encore par le chemin d’un shell, comme par exemple ‘/bin/bash’ ou /usr/bin/zsh

Exemple :

docker run ruby:2.2.0 apt-get update

Pour lister :

La quatrième permet de lister les images docker présentes sur la machine hôte et ainsi de contrôler ce que vous possédez sur votre machine hôte.

L’utilisation du paramètre ‘–rm’ permet de supprimer le container temporaire du cache une fois son exécution terminée, libérant donc de l’espace disque.

docker images

La troisième permet d’afficher quels containers sont lancés sur la machine hôte ainsi que les ports configurés comme accessibles. Grâce à cette commande, vous pourrez contrôler si des containers sont lancés, quel sont leurs noms, et sur quels ports ils écoutent.

docker ps -a

La dernière commande permet de lancer le container et d’y attacher notre TTY actuel (terminal) à un shell linux dans l’environnement du container. On peut ainsi modifier le container de l’intérieur comme avec un chroot.

 docker run -it ruby:2.2.0 /bin/bash

Une fois vos modifications terminées, pensez à appliquer les modifications sur une nouvelle image grâce à la commande suivante en ajoutant les options ainsi que le nom du container et enfin l’adresse de son dépôt et son surnom sur le dépôt sous le format repository:tag  :

docker commit <OPTIONS> CONTAINER <REPOSITORY:TAG>

 

COMPILATION DE DOCKERFILE SOUS FORME D’IMAGE

Cette partie est peut paraître complexe mais la compilation d’image Docker est très utile.

Elle permet de construire une image Docker configurée par vos soins et prête à remplir son rôle au sein de votre infrastructure.

Ce fichier d’exemple contient les commandes nécessaires à la création d’une image préconfigurée provenant des dépôts officiels .

Cette image contiendra Ruby v2.2.0, puis s’en suivra, l’installation des dépendances.

Puis l’installation de gems, le lancement du bundle install et tout en bas, la configuration du port d’écoute de votre container.

Par exemple, pour un serveur apache2 en image docker, on aura soin de déclarer (EXPOSE) les ports 80 et 443.

Les ports « exposés » des containers en cours d’exécution sont visibles grâce à la commande :

docker -ps

CREATION DU FICHIER DOCKERFILE

Pour créer une image à partir d’un fichier plat, copiez-y cet exemple :

# base image
FROM ruby:2.2.0

#install system-level dependencies
RUN apt-get update && apt-get autoremove -y && apt-get install -y --force-yes libqtwebkit-dev mongodb

# install gems from /tmp such that bundling is CACHED
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
ADD .env .env
RUN bundle install

# load application source
ADD . /usr/src/app
WORKDIR /usr/src/app

# port where application is served
EXPOSE 5000

Pour compiler votre fichier plat sous forme d’image :

docker build -t rubyapp .

Et enfin, pour lancer votre nouvelle image en utilisant le dossier renseigné ci-dessus « rubyapp »:

docker run -d --name rubyappinstance rubyapp foreman start -s /usr/src/app

 

Utilisation basique avec des containers existants

Pour lancer un container qui existe sur les dépôts officiels, il vous suffit de lancer la commande suivante en renseignant le nom de l’image sous le format <dépôt/image>.

On peut également ajouter des paramètres au lancement de cette image, comme la suppression du container temporaire une fois le container éteint (–rm)

On peut lui attribuer un nom ou encore demander de démarrer le container sur un shell pour le configurer (/bin/bash).

docker run --rm uzyexe/nmap -v 192.168.1.0/24

Pour le lancer en enregistrant un rapport et en s’appuyant sur une liste de machines contenues dans un fichier texte grâce à la commande suivante :

docker run --rm uzyexe/nmap -v -oX /tmp/report-nmap.scan -iL /tmp/arp.txt

Pour le lancer sur un ramdisk :

docker run --rm --tmpfs /run:rw,noexec,nosuid,size=65536k --name nmaper uzyexe/nmap

Les commandes avancées sous Docker-CE