Apple Silicon : Docker est beaucoup plus lent directement sous macOS qu’en virtualisant Linux 🆕

Nicolas Furno |

Mise Ă  jour le 29/12/2021

Des dĂ©veloppeurs de Docker nous ont contactĂ© pour signaler un point important liĂ© aux performances. Plus que le système utilisĂ© pour faire fonctionner l’app, c’est le type de conteneur qui peut faire la diffĂ©rence sur les Mac Apple Silicon. Si l’on exĂ©cute un conteneur x86, il faut ajouter une couche d’émulation en plus de la virtualisation qui est toujours prĂ©sente avec Docker et cela peut ralentir considĂ©rablement les performances. Dans l’exemple de notre lecteur, c’est a priori l’explication pour le gain en passant sous Ubuntu : un conteneur arm64 a Ă©tĂ© crĂ©Ă©, ce qui Ă©limine cet intermĂ©diaire supplĂ©mentaire.

Cela étant dit, il reste des problèmes de performances connus de Docker sous macOS, liés notamment à la gestion des fichiers. Une tâche est ouverte à ce sujet depuis le printemps 2020 et des versions expérimentales sont proposées pour corriger, au moins en partie, ces problèmes.


Article original

L’app pour macOS de Docker est optimisĂ©e pour les Mac Apple Silicon depuis le printemps dernier, mais cela ne veut pas dire que tout fonctionne parfaitement pour autant pour ce gestionnaire de conteneurs logiciels très utilisĂ© dans le monde du dĂ©veloppement web. Un lecteur nous a alertĂ© sur un drĂ´le de bug : la construction initiale du conteneur prend Ă©normĂ©ment de temps sur son MacBook Air M1 dotĂ© de 16 Go de RAM. Ce n’est pas l’ordinateur qui est en cause, car il obtient de bien meilleurs rĂ©sultats sur la mĂŞme machine et en passant par Linux.

Docker pour macOS, un outil complet qui permet de créer puis de gérer des conteneurs logiciels (image Docker).

Dans ses tests, il a notĂ© une diffĂ©rence Ă©norme pour crĂ©er le mĂŞme conteneur avec la version macOS de Docker et la version intĂ©grĂ©e Ă  Ubuntu, une distribution Linux. Alors qu’il lui faut environ 2 600 secondes pour obtenir son conteneur prĂŞt Ă  emploi avec l’app macOS, il ne lui faut que 210 secondes pour atteindre le mĂŞme rĂ©sultat en passant par Linux. C’est plus de 12 fois plus rapide, sur le mĂŞme MacBook Air et alors mĂŞme qu’il ajoute une couche de virtualisation en plus de macOS !

Il y a manifestement un gros bug dans Docker qui justifie cet Ă©cart important. Quoi qu’il en soit, ce lecteur a notĂ© d’autres tĂ©moignages similaires, dont cet article de LifeinTech publiĂ© en novembre dernier qui donne des chiffres avec un Apple M1 Max bien plus puissant que l’Apple M1 Ă©voquĂ© prĂ©cĂ©demment. Le processeur n’est pas en cause et le meilleur rĂ©sultat de tous les tests rĂ©alisĂ©s par le site est fourni par le MacBook Pro, mais en virtualisation sous Linux encore une fois.

Tableau LifeinTech.

Ce qui est Ă©tonnant, c’est que ce problème n’est pas rĂ©cent et on trouve facilement des tĂ©moignages depuis le printemps. Pourquoi est-ce que les dĂ©veloppeurs de Docker ne le corrigent pas ? S’agit-il d’un bug de leur cĂ´tĂ©, ou bien du cĂ´tĂ© d’Apple et de macOS ? En fouillant un petit peu plus, on dĂ©couvre d’autres articles qui datent d’avant la sortie des Mac Apple Silicon et qui se plaignent des mauvaises performances de Docker pour macOS. Le logiciel souffre a priori de mauvaises optimisations que la transition vers les nouvelles puces d’Apple pourrait avoir accentuĂ©es.

En attendant un correctif, le plus simple semble ĂŞtre de passer par une distribution Linux en virtualisation par dessus macOS. Cela fait deux couches virtuelles au lieu d’une, mais les chiffres que l’on peut croiser prouvent que cela fonctionne. En utilisant Multipass, on peut obtenir un Ubuntu virtualisĂ© avec une seule ligne de commande et très rapidement, c’est la solution finalement utilisĂ©e par notre lecteur sur son MacBook Air M1.

Multipass : Ubuntu sur les Mac M1 en moins d’une minute

Accédez aux commentaires de l'article