Depuis quelque temps je creuse pas mal autour des différents thème de la programmation et je vois régulièrement docker apparaitre. J'ai regardé un peu ce que c'était et au final, je ne comprend pas l'utilité des conteneurs. Quelqu'un peut m'expliquer?
Basiquement, ca permet de deployer un logiciel avec son environment. Tu peux penser docker comme une machine virtuelle legere. Ou comme un paquet .deb avec plus de fonctionnalite.
Certains services sont plus efficients avec tel OS, et certains OS sont plus légers que d'autres.
Les conteneurs ça permet de rationaliser ton environnement, pour maximiser le ratio vitesse/mémoire du service.
Le 17 avril 2022 à 19:13:16 :
Certains services sont plus efficients avec tel OS, et certains OS sont plus légers que d'autres.
Les conteneurs ça permet de rationaliser ton environnement, pour maximiser le ratio vitesse/mémoire du service.
Bonjour. Non.
Je suis pas devops mais en tant qu'ingé j'utilise docker tous les jours. Je suis spécialisé en IA, quand je développe une IA, il y a tout un écosystème dont l'IA a besoin pour tourner, certaines librairies pour l'entraîner, la benchmark et la déployer. Le truc c'est que ces librairies ont des spécificités propres à leurs versions et au hardware. Par exemple, en python on peut imaginer que la façon dont 2 versions de la même librairie fera un traitement qui sera différent ou encore, vu que l'IA sera déployée avec CUDA côté hardware, il faut que de mon côté et du côté déploiement, niveau software on se comprenne, quitte à créer deux environement pour 2 devices différents utilisant le même code, par exemple sur pc c'est le plus facile d'installer des libraires. Sur de l'embarqué pas trop léger pas contre, on ira voir du côté de L4T pour les jetson de chez nvidia par exemple. Pour ça : docker.
Je fais un dockerfile, donc en gros je prends un environement que je pense comme étant assez léger et compatible avec ce que je veux développer, j'y ajoute ce qui manque ou je supprime ce qui me gène, je l'envoie aux ingés qui s'occupent du déploiement et ils me disent si c'est ok ou non, dès que j'ai le feu vert, je peux m'occuper de mes affaires sans me soucier du fait que par exemple, ma libraire a une version différente de la leur et donc, que le truc que je viens de développer va prendre un temps de dingue à adapter à leur environement. Tu peux faire beaucoup plus de trucs avec docker mais si tu as pas l'ambition de devenir devops, je pense que mon use case se rapproche de la majorité des utilisateurs de docker et encore une fois je suis pas un pro de docker, tu peux faire beaucoup de choses avec.
Aussi, imaginons que tu développes pas d'IA mais une application, tu peux utiliser docker (je pense surtout à docker compose) et 'isoler' chaque partie de ton app en termes de dépendances, par exemple, l'environement nécessaire pour faire tourner une base de données est différente de l'environement nécessaire pour faire tourner nodejs, et donc au final, surtout si tu bosses avec des gens, personne n'est perdu en terme de gestion de dépendances et d'environement. Et là tu oublies les messages style "Ok, alors j'ai pull ton code, mais quand je le lance j'ai marqué 'npm est pas installé'" ou encore "j'utilise python2.7, ton code marche pas mdr".
À titre perso, je développe deux trois applis assez simple et je les héberge sur mon VPS. (serveur linux)
En gros, je crée mon dockerfile (code pour créer le container) et je le teste sur mon PC local. Si ça marche, je le récupère sur mon VPS, je le lance et voilà.
Moi, j'y vois deux avantages :
Le 17 avril 2022 à 19:47:47 :
Je suis pas devops mais en tant qu'ingé j'utilise docker tous les jours. Je suis spécialisé en IA, quand je développe une IA, il y a tout un écosystème dont l'IA a besoin pour tourner, certaines librairies pour l'entraîner, la benchmark et la déployer. Le truc c'est que ces librairies ont des spécificités propres à leurs versions et au hardware. Par exemple, en python on peut imaginer que la façon dont 2 versions de la même librairie fera un traitement qui sera différent ou encore, vu que l'IA sera déployée avec CUDA côté hardware, il faut que de mon côté et du côté déploiement, niveau software on se comprenne, quitte à créer deux environement pour 2 devices différents utilisant le même code, par exemple sur pc c'est le plus facile d'installer des libraires. Sur de l'embarqué pas trop léger pas contre, on ira voir du côté de L4T pour les jetson de chez nvidia par exemple. Pour ça : docker.Je fais un dockerfile, donc en gros je prends un environement que je pense comme étant assez léger et compatible avec ce que je veux développer, j'y ajoute ce qui manque ou je supprime ce qui me gène, je l'envoie aux ingés qui s'occupent du déploiement et ils me disent si c'est ok ou non, dès que j'ai le feu vert, je peux m'occuper de mes affaires sans me soucier du fait que par exemple, ma libraire a une version différente de la leur et donc, que le truc que je viens de développer va prendre un temps de dingue à adapter à leur environement. Tu peux faire beaucoup plus de trucs avec docker mais si tu as pas l'ambition de devenir devops, je pense que mon use case se rapproche de la majorité des utilisateurs de docker et encore une fois je suis pas un pro de docker, tu peux faire beaucoup de choses avec.
Aussi, imaginons que tu développes pas d'IA mais une application, tu peux utiliser docker (je pense surtout à docker compose) et 'isoler' chaque partie de ton app en termes de dépendances, par exemple, l'environement nécessaire pour faire tourner une base de données est différente de l'environement nécessaire pour faire tourner nodejs, et donc au final, surtout si tu bosses avec des gens, personne n'est perdu en terme de gestion de dépendances et d'environement. Et là tu oublies les messages style "Ok, alors j'ai pull ton code, mais quand je le lance j'ai marqué 'npm est pas installé'" ou encore "j'utilise python2.7, ton code marche pas mdr".
En gros ça sert à isoler des environnements optimaux pour chaque application ?
Le 17 avril 2022 à 21:29:49 :
Le 17 avril 2022 à 19:47:47 :
Je suis pas devops mais en tant qu'ingé j'utilise docker tous les jours. Je suis spécialisé en IA, quand je développe une IA, il y a tout un écosystème dont l'IA a besoin pour tourner, certaines librairies pour l'entraîner, la benchmark et la déployer. Le truc c'est que ces librairies ont des spécificités propres à leurs versions et au hardware. Par exemple, en python on peut imaginer que la façon dont 2 versions de la même librairie fera un traitement qui sera différent ou encore, vu que l'IA sera déployée avec CUDA côté hardware, il faut que de mon côté et du côté déploiement, niveau software on se comprenne, quitte à créer deux environement pour 2 devices différents utilisant le même code, par exemple sur pc c'est le plus facile d'installer des libraires. Sur de l'embarqué pas trop léger pas contre, on ira voir du côté de L4T pour les jetson de chez nvidia par exemple. Pour ça : docker.Je fais un dockerfile, donc en gros je prends un environement que je pense comme étant assez léger et compatible avec ce que je veux développer, j'y ajoute ce qui manque ou je supprime ce qui me gène, je l'envoie aux ingés qui s'occupent du déploiement et ils me disent si c'est ok ou non, dès que j'ai le feu vert, je peux m'occuper de mes affaires sans me soucier du fait que par exemple, ma libraire a une version différente de la leur et donc, que le truc que je viens de développer va prendre un temps de dingue à adapter à leur environement. Tu peux faire beaucoup plus de trucs avec docker mais si tu as pas l'ambition de devenir devops, je pense que mon use case se rapproche de la majorité des utilisateurs de docker et encore une fois je suis pas un pro de docker, tu peux faire beaucoup de choses avec.
Aussi, imaginons que tu développes pas d'IA mais une application, tu peux utiliser docker (je pense surtout à docker compose) et 'isoler' chaque partie de ton app en termes de dépendances, par exemple, l'environement nécessaire pour faire tourner une base de données est différente de l'environement nécessaire pour faire tourner nodejs, et donc au final, surtout si tu bosses avec des gens, personne n'est perdu en terme de gestion de dépendances et d'environement. Et là tu oublies les messages style "Ok, alors j'ai pull ton code, mais quand je le lance j'ai marqué 'npm est pas installé'" ou encore "j'utilise python2.7, ton code marche pas mdr".
En gros ça sert à isoler des environnements optimaux pour chaque application ?
non ça sert à définir les dépendances de ton service
non, pas seulement les dependance, mais l'environnement aussi. Parceque tu peux mettre les fichiers de configuration et specifier els connection entre different service dans un deployement particulier.
Le 17 avril 2022 à 22:49:49 :
non, pas seulement les dependance, mais l'environnement aussi. Parceque tu peux mettre les fichiers de configuration et specifier els connection entre different service dans un deployement particulier.
L'environnement ça fait partie des dépendances ![]()
Le 17 avril 2022 à 23:35:37 :
Le 17 avril 2022 à 22:49:49 :
non, pas seulement les dependance, mais l'environnement aussi. Parceque tu peux mettre les fichiers de configuration et specifier els connection entre different service dans un deployement particulier.L'environnement ça fait partie des dépendances
Les fichiers de configurations font parti des dependances? Les autres services systeme qui tournent et comment ils sont configure font aussi parti des dependances?
Dans un sens abstrait, peut etre. Mais dans le sens commun en developpement, certainement pas.
[21:54:18] <Elilalilalulu>
Le 17 avril 2022 à 21:29:49 :
Le 17 avril 2022 à 19:47:47 :
Je suis pas devops mais en tant qu'ingé j'utilise docker tous les jours. Je suis spécialisé en IA, quand je développe une IA, il y a tout un écosystème dont l'IA a besoin pour tourner, certaines librairies pour l'entraîner, la benchmark et la déployer. Le truc c'est que ces librairies ont des spécificités propres à leurs versions et au hardware. Par exemple, en python on peut imaginer que la façon dont 2 versions de la même librairie fera un traitement qui sera différent ou encore, vu que l'IA sera déployée avec CUDA côté hardware, il faut que de mon côté et du côté déploiement, niveau software on se comprenne, quitte à créer deux environement pour 2 devices différents utilisant le même code, par exemple sur pc c'est le plus facile d'installer des libraires. Sur de l'embarqué pas trop léger pas contre, on ira voir du côté de L4T pour les jetson de chez nvidia par exemple. Pour ça : docker.Je fais un dockerfile, donc en gros je prends un environement que je pense comme étant assez léger et compatible avec ce que je veux développer, j'y ajoute ce qui manque ou je supprime ce qui me gène, je l'envoie aux ingés qui s'occupent du déploiement et ils me disent si c'est ok ou non, dès que j'ai le feu vert, je peux m'occuper de mes affaires sans me soucier du fait que par exemple, ma libraire a une version différente de la leur et donc, que le truc que je viens de développer va prendre un temps de dingue à adapter à leur environement. Tu peux faire beaucoup plus de trucs avec docker mais si tu as pas l'ambition de devenir devops, je pense que mon use case se rapproche de la majorité des utilisateurs de docker et encore une fois je suis pas un pro de docker, tu peux faire beaucoup de choses avec.
Aussi, imaginons que tu développes pas d'IA mais une application, tu peux utiliser docker (je pense surtout à docker compose) et 'isoler' chaque partie de ton app en termes de dépendances, par exemple, l'environement nécessaire pour faire tourner une base de données est différente de l'environement nécessaire pour faire tourner nodejs, et donc au final, surtout si tu bosses avec des gens, personne n'est perdu en terme de gestion de dépendances et d'environement. Et là tu oublies les messages style "Ok, alors j'ai pull ton code, mais quand je le lance j'ai marqué 'npm est pas installé'" ou encore "j'utilise python2.7, ton code marche pas mdr".
En gros ça sert à isoler des environnements optimaux pour chaque application ?
non ça sert à définir les dépendances de ton service
Pas vraiment. C'est une nécessité de les définir pour utiliser ton service dans un conteneur docker.
Ça permet surtout de répliquer (scalabilite) ton service tout en maîtrisant ses interfaces et donc son isolement du reste du logiciel.
Tu peux aussi faire tourner ton service chez un cloud provider sans trop te soucier des spécificités de ses machines.
Le 17 avril 2022 à 21:04:26 :
À titre perso, je développe deux trois applis assez simple et je les héberge sur mon VPS. (serveur linux)En gros, je crée mon dockerfile (code pour créer le container) et je le teste sur mon PC local. Si ça marche, je le récupère sur mon VPS, je le lance et voilà.
Moi, j'y vois deux avantages :
- SI ça marche sur ma machine locale, ça marchera sur mon serveur : Imagine que tu fais ton appli sous Windows et qu'après tu la déploie sur linux et que tu te rend compte qu'elle ne marche pas. Avec docker aucun pb de compatibilité.
- C'est plus facile à gérer : mes containers rebootent automatiquement si le serveur crash, je peux les stops et les run plus facilement qu'avec d'autres outils que j'avais essayés.
dans les faits c'est comme ça, dans la réalité des fois tu as des surprises ![]()
Le 21 avril 2022 à 13:05:29 :
Le 17 avril 2022 à 21:04:26 :
À titre perso, je développe deux trois applis assez simple et je les héberge sur mon VPS. (serveur linux)En gros, je crée mon dockerfile (code pour créer le container) et je le teste sur mon PC local. Si ça marche, je le récupère sur mon VPS, je le lance et voilà.
Moi, j'y vois deux avantages :
- SI ça marche sur ma machine locale, ça marchera sur mon serveur : Imagine que tu fais ton appli sous Windows et qu'après tu la déploie sur linux et que tu te rend compte qu'elle ne marche pas. Avec docker aucun pb de compatibilité.
- C'est plus facile à gérer : mes containers rebootent automatiquement si le serveur crash, je peux les stops et les run plus facilement qu'avec d'autres outils que j'avais essayés.
dans les faits c'est comme ça, dans la réalité des fois tu as des surprises
Je débute avec, stp laisse moi rêver un peu ![]()