Après avoir été diplômé du Wagon Tokyo (https://www.lewagon.com/ja/tokyo), une école de programmation anglaise de France qui enseigne principalement Ruby and Rails, j'ai commencé à étudier Docker. J'ai construit Docker sur un projet sur lequel j'ai travaillé après l'obtention de mon diplôme, mais j'ai rencontré de nombreuses erreurs. J'ai résolu l'erreur par moi-même par essais et erreurs, donc cela a pris beaucoup de temps. Je pense qu'il y a beaucoup de gens comme moi qui ont eu des problèmes avec des erreurs lorsqu'ils ont touché Docker pour la première fois, j'ai donc décidé d'écrire cet article, en espérant que la solution que j'ai utilisée serait utile.
1 PermissionError (Permission denied :‘~~~/your_app/tmp/db’) D'après ce que je peux voir dans la documentation officielle de Docker, cette erreur ne semble concerner que les utilisateurs de Linux, mais je partagerai l'autorisation car cela peut être ennuyeux pour les utilisateurs de Linux. Cette erreur se produit car Docker crée une base de données temporaire (dossier db), mais l'utilisateur Linux actuellement connecté n'a pas le droit d'utiliser cette base de données.
Tout d'abord, utilisez cette commande pour vous déplacer vers ce dossier temporaire.
$ cd ~~~(Chemin d'accès à votre application)/(Votre propre nom d'application)/tmp
Vérifiez quels utilisateurs peuvent utiliser le dossier db avec la commande suivante.
$ ls -la
Si vous ne voyez pas le nom de l'utilisateur Linux actuellement connecté, donnez à cet utilisateur l'autorisation avec la commande suivante:
$ sudo chown -R (Nom d'utilisateur Linux) .
password for (Nom d'utilisateur Linux):
Puisqu'il s'agit d'une commande sudo, vous serez invité à entrer le mot de passe. À ce stade, vous devriez pouvoir exécuter les principales commandes Docker telles que "docker-compose build" et "docker-compose up" sans aucun problème.
Remarque: Avec une erreur similaire, j'ai dit "FATAL: impossible d'ouvrir le fichier" Je vois souvent l'erreur "global / pg_filenode.map": Permission refusée ", mais c'est correct si vous redémarrez avec" docker-compose stop "→" docker-compose up ".
2 No space left on your device Cette erreur se produit lorsque la capacité de l'image Docker devient importante en raison du paramètre du Dockerfile. Les images et les conteneurs inutiles peuvent être facilement supprimés avec la commande suivante.
$ docker image prune
$ docker container prune
Lorsque vous entrez ces commandes, vous verrez le message suivant:
WARNING! This will remove all dangling images (Ou conteneurs).
Are you sure you want to continue? [y/N]
Entrez "y" car les images pendantes signifient des images inutiles. Vous devez disposer de suffisamment d'espace et pouvoir exécuter les mêmes commandes principales de Docker que lors de la résolution de PermissionError.
Si vous avez besoin d'en supprimer plus, recherchez l'image que vous souhaitez supprimer ci-dessous.
$ docker images
Après avoir confirmé l'ID de l'image que vous souhaitez supprimer, supprimez-le ci-dessous.
$ docker image rm -f (ID de l'image que vous souhaitez effacer)
Bien qu'en anglais, ce livre est recommandé car il explique en détail comment utiliser Docker dans les projets Ruby on Rails.
Docker for Rails Developers: https://pragprog.com/titles/ridocker/
Malheureusement, il existe peu de documents Docker pour Rails, y compris l'anglais, donc si vous avez une courte histoire de Rails et que vous souhaitez lire des documents simples sur Docker, c'est en anglais, mais cela vaut la peine d'être lu. pense.
J'ai écrit un article en anglais sur Medium plus en détail sur ce sujet, alors jetez-y également un œil.
https://medium.com/@shogohida_81081/5-solutions-to-common-errors-of-docker-for-beginners-c04dc1237c78