Comment manager un serveur docker à distance ?

infra mai 14, 2019

Docker c'est bien. C'est vraiment bien, même. C'est carrément cool, en fait.

C'est encore plus cool avec une interface de gestion, web, qui permet la délégation à différents comptes et groupes. C'est le cas de Portainer. Dans sa dernière version, Portainer ajoute pas mal de petite fonctionnalités et le simple fait de pouvoir filer des droits sur un container (ou un groupe de containers) à un identifiant ou un groupe d'identifiants ça me plait vachement.

J'ai différents serveurs avec Docker, dont certains dédiés. J'ai aussi parfois le besoin de filer l'accès à tel ou tel container à quelqu'un pour du test ou du dépannage. Le truc c'est que faire un login SSH, ouvrir le port sur le firewall etc etc ... à chaque fois c'est chiant. Du coup j'ai un Portainer sur un de mes Dockers et je manage les autres avec.

Le truc c'est que ça requiert un peu de bidouille la première fois vu que, de base, Docker ne permet pas que l'on s'y connecte à distance via le réseau. Pour le permettre, suivez ces quelques étapes et le tour est joué :

Pompé directment de cette page.
"Best practices" pour configurer et contrôler Docker via systemd.

  1. Créer un fichier daemon.json dans le répertoire /etc/dockeret ajoutez-y la ligne :

     {"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
    
  2. Créez le répertoire /etc/systemd/system/docker.service.d/ puis le fichier override.conf et ajouter dedans les quelques lignes :

     [Service]
     ExecStart=
     ExecStart=/usr/bin/dockerd
    
  3. Redémarrez le démon systemd :

     systemctl daemon-reload
    
  4. Redémarrez Docker :

     systemctl restart docker.service

En théorie tout devrait démarrer rapidement, sauf si vous avez cafouillé quelque part. Bon, ici la conf est pas ouf, il vous sera facile de revenir en arrière et de vérifier ce que vous avez fait (perso, la deuxième fois j'avais écrit override.conf dans le répertoire au dessus de docker.service.d ).

Et voilà, vous pouvez à présent

  • Contrôler votre/vos Docker(s) à distance via la commande docker -H tcp://ip.add.re.ss:2375
  • Ajouter un Endpoint à votre dashboard Portainer
Quelques-uns de mes serveurs Docker, directement dans Portainer !