[RUBY] Eine Lösung für Docker-Fehler, bei denen Anfänger häufig stecken bleiben

Artikelhintergrund

Nach meinem Abschluss am Le Wagon Tokyo (https://www.lewagon.com/ja/tokyo), einer englischen Programmierschule aus Frankreich, die hauptsächlich Ruby und Rails unterrichtet, begann ich Docker zu studieren. Ich habe Docker auf einem Projekt aufgebaut, an dem ich nach meinem Abschluss gearbeitet habe, aber ich hatte viele Fehler. Ich habe den Fehler selbst durch Ausprobieren gelöst, daher hat es viel Zeit gekostet. Ich denke, es gibt viele Leute wie mich, die Probleme mit Fehlern hatten, als sie Docker zum ersten Mal berührten. Deshalb habe ich beschlossen, diesen Artikel zu schreiben, damit ich auf die von mir verwendete Lösung verweisen kann.

1 PermissionError (Permission denied :‘~~~/your_app/tmp/db’) Soweit ich aus der offiziellen Docker-Dokumentation ersehen kann, scheint dieser Fehler nur für Linux-Benutzer zu sein, aber ich teile die Berechtigung, da er für Linux-Benutzer ärgerlich sein kann. Dieser Fehler tritt auf, weil Docker eine temporäre Datenbank (Datenbankordner) erstellt, der derzeit angemeldete Linux-Benutzer jedoch nicht berechtigt ist, diese Datenbank zu verwenden.

Verwenden Sie zuerst diesen Befehl, um in diesen temporären Ordner zu wechseln.

$ cd ~~~(Pfad zu Ihrer App)/(Dein eigener App-Name)/tmp

Überprüfen Sie mit dem folgenden Befehl, welche Benutzer den Datenbankordner verwenden können.

$ ls -la

Wenn der Name des aktuell angemeldeten Linux-Benutzers nicht angezeigt wird, erteilen Sie diesem Benutzer die Berechtigung mit dem folgenden Befehl:

$ sudo chown -R (Linux-Benutzername) . 
password for (Linux-Benutzername):

Da es sich um einen Sudo-Befehl handelt, werden Sie aufgefordert, das Kennwort einzugeben. Zu diesem Zeitpunkt sollten Sie in der Lage sein, wichtige Docker-Befehle wie "Docker-Compose Build" und "Docker-Compose Up" problemlos auszuführen.

Hinweis: Mit einem ähnlichen Fehler sagte ich "FATAL: Datei konnte nicht geöffnet werden" Ich sehe oft den Fehler "global / pg_filenode.map": Berechtigung verweigert ", aber dies ist in Ordnung, wenn Sie mit" Docker-Compose Stop "→" Docker-Compose Up "neu starten.

2 No space left on your device Dieser Fehler tritt auf, wenn die Kapazität des Docker-Images aufgrund der Einstellung der Docker-Datei groß wird. Unnötige Bilder und Container können mit dem folgenden Befehl einfach gelöscht werden.

$ docker image prune
$ docker container prune

Wenn Sie diese Befehle eingeben, wird die folgende Meldung angezeigt:

WARNING! This will remove all dangling images (Oder Container).
Are you sure you want to continue? [y/N]

Geben Sie "y" ein, da baumelnde Bilder unnötige Bilder bedeuten. Sie sollten über genügend Speicherplatz verfügen und in der Lage sein, dieselben wichtigen Docker-Befehle wie beim Auflösen des PermissionError auszuführen.

Wenn Sie mehr entfernen müssen, suchen Sie unten nach dem Bild, das Sie entfernen möchten.

$ docker images

Nachdem Sie die ID des zu löschenden Bildes bestätigt haben, löschen Sie es unten.

$ docker image rm -f (ID des Bildes, das Sie löschen möchten)

Verweise

Obwohl in englischer Sprache, wird dieses Buch empfohlen, da es ausführlich beschreibt, wie Docker in Ruby on Rails-Projekten verwendet wird.

Docker for Rails Developers: https://pragprog.com/titles/ridocker/

Leider gibt es nur wenige Docker-Materialien für Rails, einschließlich Englisch. Wenn Sie also eine kurze Geschichte von Rails haben und einfache Materialien über Docker lesen möchten, ist es Englisch, aber es lohnt sich zu lesen. Überlegen.

Mittlerer englischer Artikel

Ich habe einen Artikel in englischer Sprache auf Medium ausführlicher zu diesem Thema geschrieben. Schauen Sie also auch dort nach.

https://medium.com/@shogohida_81081/5-solutions-to-common-errors-of-docker-for-beginners-c04dc1237c78

Recommended Posts

Eine Lösung für Docker-Fehler, bei denen Anfänger häufig stecken bleiben
Bleiben Sie in einem Java Primer stecken
Was tun, wenn in Docker ein gcc-Fehler auftritt?
Befehle, die zur Behebung von Fehlern in Docker beigetragen haben
[AWS CLI] Wechseln Sie die Rollen, um ein Docker-Image in einem anderen Konto abzurufen
So erhalten Sie einen Heapdump aus einem Docker-Container
Eine Geschichte über einen Fehler während der Migration in Docker PHP Laravel
Spring Boot Häufig für Anfänger (@ComponentScan)
Mit Podman im Docker möchte jeder miteinander auskommen und Docker mit einem gemeinsam genutzten Computer verwenden
Was tun, wenn in GlassFish eine java.io.IOException auftritt?
Eine lustige Geschichte, die beim Import von fx-clj in einem Chaos steckt
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
Ich versuche nicht, meine eigene Annotationsverarbeitung in Eclipse zum Laufen zu bringen
So bringen Sie JDK 11 bequem in den Mac
So erhalten Sie Parameter in Spark
So testen Sie eine private Methode und verspotten sie teilweise in Java
Was tun, wenn Sie in Thymeleaf Layout eine groovige Warnung erhalten?
Shell-Skript, das ein Docker-Image erstellt und an ECR weiterleitet
So erhalten Sie das aktuelle Datum als Zeichenfolge im Format JJJJMMTT
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
So migrieren Sie eine in einer lokalen Docker-Umgebung erstellte Webanwendung nach AWS
[Java] [Für Anfänger] So fügen Sie Elemente direkt in ein zweidimensionales Array ein
[Ruby / Rails] Verwenden Sie einen Alias. Auf eine Weise, dass Rubocop nicht böse wird!
So starten Sie einen Docker-Container mit einem in einer Batchdatei bereitgestellten Volume