5 votes

Puis-je utiliser Docker pour isoler mon environnement de développement ?

Ok, ça me rend folle. J'ai lu beaucoup de choses sur Docker, et je n'arrive toujours pas à comprendre - est-ce que Docker est pour moi...

J'utilise Mac OS X au travail et vagrant pour démarrer une machine virtuelle avec Ubuntu pour le développement. J'utilise vagrant pour chaque projet car je veux avoir le même système d'exploitation et les mêmes librairies que ceux que j'utilise sur les serveurs de production. Je déteste les outils comme rbenv et nvm car leur utilisation augmente le temps de démarrage du terminal. Si les deux sont activés, je dois attendre 2 à 4 secondes pour qu'un nouvel onglet de terminal soit prêt. Je tape vite et ces délais tuent ma productivité.

Je suis d'accord avec vagrant mais utiliser virtualbox qui nécessite ~800 mb de RAM pour chaque VM... c'est trop.

La question est donc la suivante : puis-je utiliser Docker de la même manière que Vagrant ? Disons que j'ai deux projets et que je dois utiliser Ruby 2.0 pour le projet A et Ruby 2.3 pour le projet B. Est-il possible/correct avec docker de créer deux conteneurs, chacun avec sa propre version de Ruby ? Et je ne veux pas que ces versions de Ruby se croisent avec le système Ruby.

Avec vagrant, je crée simplement deux VM, l'une avec Ruby 2.0, et la seconde avec Ruby 2.3 . Si je n'ai pas besoin de l'une d'entre elles, je détruis la VM et mon système reste clair sans logiciel installé sur la machine invitée.

Édité : Je sais que je ne peux pas utiliser Docker en mode natif avec OS X. Supposons un Linux Ubuntu/Debian/Arch/etc. Je suis prêt à passer à Linux, si je sais que Linux+Docker me donneront ce que je veux.

6voto

khattam Points 477

Vous pouvez utiliser Docker sous Mac OS X à l'aide de la nouvelle version bêta de Docker pour Mac OS X. Elle utilise toujours une VM, mais elle est plus légère que Virtualbox. Il permet également une meilleure intégration avec OS X. Pour l'instant, il est légèrement bogué.

Pour répondre à votre question, oui, vous pouvez créer votre environnement avec le runtime dont vous avez besoin à l'intérieur du conteneur docker sans que cela n'affecte les autres conteneurs ou le système. Gardez à l'esprit qu'un conteneur n'exécute généralement qu'un seul processus à l'intérieur, ne vous attendez donc pas à exécuter plusieurs services comme vous le feriez dans une boîte vagrant. Il ne s'agit pas d'un système d'exploitation complet, mais simplement d'un exécutable fonctionnant dans un espace de noms de noyau différent. Si vous souhaitez exécuter plusieurs processus, il existe des solutions de contournement, mais la manière "correcte" de le faire est d'utiliser plusieurs conteneurs connectés ensemble à l'aide de quelque chose comme docker-compose.

3voto

Kyle Anderson Points 3415

Oui, il est tout à fait possible de créer deux conteneurs Docker distincts, chacun exécutant une version différente de Ruby, sans que cela n'affecte la version installée sur votre machine hôte.

Lorsque vous créez un Dockerfile, vous spécifiez une image de base à étendre. Par exemple :

FROM ruby:2.3-onbuild

Les images Docker officielles de Ruby ne remontent qu'à la version 2.1, mais ne vous laissez pas décourager. Jetez un coup d'œil à la 2.3 Dockerfile réécrivez le vôtre, mais installez l'ancienne version de Ruby, et le tour est joué. C'est vraiment aussi simple que cela de créer des images Docker personnalisées de toute sorte.

Sources :

Image Docker officielle de Ruby

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X