Je vous ai dit que j’étais passé sous Arch, et plus précisément Manjaro. Et pour ma culture d’homme du monde (ahah), mais surtout pour ne plus subir les railleries des puristes (joke bis), je me suis dit que moi aussi, j’allais me mettre à Docker.
L’intérêt que je vois à cela, comparé à Xampp, est que je puisse tester diverses versions de PHP pour mes scripts, et surtout tester sur un serveur Nginx, ce que je ne peux pas faire actuellement.
Allez, c’est le week-end, il fait beau, autant en profiter et plonger la tête dans le shell plutôt que dans la piscine : Ce soir, j’aurai installé Docker sur Manjaro.

Sincèrement, il n’y a rien d’intéressant ici pour ceux qui connaissent un peu. C’est plus un mémo pour moi et un tremplin pour pouvoir aller plus loin dans un autre billet que j’espère pouvoir sortir sous peu.

Mises à jour

Avant d’installer quoi que ce soit, on va si besoin installer les mises à jour disponibles et vérifier l’existence des nouveaux paquets. Faudrait pas se retrouver à installer un vieux bouzin…

Donc on va vérifier l’existence de mises à jour depuis les dépôts et paquets AUR (-a) :

pamac checkupdates -a 
pamac checkupdates

Puis installer les mises à jour (si disponibles) :

pamac upgrade -a
pamac upgrade

Oui je préfère pamac à pacman, cependant sachez que si j’avais lancé pacman -Su, ça revenait à la même chose. Cependant, pamac étant le gestionnaire de logiciels (la logithèque graphique, c’est lui) choisi par les dévs de Manjaro, celui-ci a l’avantage d’aller chercher dans tous les dépôts, et pas seulement les dépôts officiels.

Sinon, remarquez que je n’utilise pas sudo devant pamac : Si besoin, pamac vous demandera l’autorisation et donc le mot de passe pour exécuter l’action avec les droits nécessaires.

Installation de Docker

Venons en au but. Comme dans beaucoup de distributions, Docker est déjà dans les dépôts, pas besoin de s’enquiquiner plus que ça. Ouf 🙂

pamac install docker
install docker
Une centaine de Mo à télécharger

Avant l’installation, il vous sera demandé d’installer une dépendance (PIGZ), qui permet d’utiliser plusieurs cœurs lorsque plusieurs images seront à compresser. L’intérêt semble nul puisque cette librairie ne sert que pour la compression. Or dans la pratique, c’est plutôt la décompression qui est utilisée (lorsque vous téléchargerez des images (conteneurs).

Petit test

Avant de vous laisser partir, on va tester que l’installation a été faite correctement et surtout, glisser quelques commandes à savoir.
On va en premier lieu chercher à connaître la version de Docker :

sudo docker version

Si l’installation s’est bien passée, vous devriez avoir ceci :

Client:
 Version:           19.03.11-ce
 API version:       1.40
 Go version:        go1.14.3
 Git commit:        42e35e61f3
 Built:             Tue Jun  2 15:09:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

On a là un tas d’informations. La plus importante est la version, ici 19.03.11. ce est l’acronyme de Community Edition. En revanche en bas, on voit que Docker n’arrive pas à se connecter au daemon (serveur). Normal, on ne l’a pas lancé, on va faire ça.

Lancer Docker

Pour démarrer le serveur (daemon), il nous suffit de taper dans un shell :

sudo systemctl start docker 

Et pour l’arrêter :

sudo systemctl stop docker

Pour info, la commande systemctl est inhérente à systemd, le système d’initialisation choisi par Manjaro. C’est cet outil qui nous permet de gérer les différents services d’une machine. Si vous voulez un peu d’histoire sur systemd, je vous renvoie vers LinuxFr.org.
Artix Linux par exemple, aussi basée sur Arch, utilise principalement OpenRC en tant qu’alternative à systemd.

Une fois le serveur Docker lancé, vous devriez avoir plus d’informations le concernant en lançant un sudo docker version :

sudo docker version                                                   [1]
Client:
 Version:           19.03.11-ce
 API version:       1.40
 Go version:        go1.14.3
 Git commit:        42e35e61f3
 Built:             Tue Jun  2 15:09:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.11-ce
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.14.3
  Git commit:       42e35e61f3
  Built:            Tue Jun  2 15:09:05 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.4.m
  GitCommit:        d76c121f76a5fc8a462dc64594aea72fe18e1178.m
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Lancement au démarrage

Pour que Docker se lance automatiquement au démarrage du système, il suffit de lancer un petit :

sudo systemctl enable docker

Ainsi plus besoin de taper la commande pour lancer activer Docker.
Enfin, si au contraire vous souhaitez qu’il ne se lance plus au démarrage, lancez :

sudo systemctl disable docker

Sudo or not sudo

Enfin, il faut savoir que seul l’utilisateur root (ou un utilisateur avec les droits de super administrateur) a le droit de manager Docker. Si ne voulez plus avoir à monter les droits à chaque commande docker, il va falloir ajouter l’utilisateur courant au groupe docker, créé normalement par le script d’installation de Docker :

sudo usermod -aG docker $USER

Notez qu’il faut redémarrer la machine pour que les modifications sur le groupe soient effectives.
Pour les impatients, vous pouvez toujours vous connecter en tant que groupe docker :

newgrp docker

Hello world

Finalement, on se le fait ce test ?
Pour savoir si tout a fonctionné, on va lancer un conteneur de test, créé pour cela : hello-world :

docker run hello-world

Et vous devriez avoir à peu près ceci :

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

La commande run suivi du nom de l’image va tenter de lancer l’image hello-world depuis le disque dur local. S’il ne la trouve pas, il ira la chercher sur le hub officiel. Puis il créé un conteneur à partir de cette image.
Sachez que chaque fois que vous lancerez cette commande, un nouveau conteneur sera créé. Relancer un conteneur arrêté est possible bien sûr, mais pas de la même façon. On verra cela dans un prochain billet.

J’arrête ici pour l’installation. L’usage viendra plus tard, j’attends vraiment de me familiariser et surtout comprendre les rouages de Docker, et voir comment je peux l’adapter à mon besoin.