"Docker-API ist fehlgeschlagen". Beim Start eines Abbildes!

Status
Für weitere Antworten geschlossen.

mabox

Benutzer
Mitglied seit
10. Jul 2013
Beiträge
192
Punkte für Reaktionen
12
Punkte
24
Hallo,
hat irgendjemand schon Docker auf seiner Synology am laufen?
Ich habe eine DS216+ und heute mal Docker installiert über das offizille Synology Paket.
Anschließend dann mal ein Abbild heruntergeladen.
Wenn ich das Abbild jetzt mit dem Assistenten starten möchte, erhalte ich am Ende folgende Meldung:

""Docker-API ist fehlgeschlagen". Weitere Infos im Protokoll

Im Protokoll gibt es lediglich folgende Meldung: Create container containername failed: No command specified

Wenn ich das Abbild über "Docker run" starte mit dem Befehl "docker run -d containername /bin/sh" läuft der Containter.

Irgendjemand eine Idee warum der "Synology Assistent" anscheinend nicht funtkioniert? Mich würde interessieren ob noch jemand das gleiche Problem hat.
Ansonsten kann ich auch über den Docker run Befehl starten, wäre jetzt nicht tragisch. Wundert mich nur warum der Synology Assistent anscheinend nicht funktioniert.

Schöne Grüße
mabox
 

Jeremia

Benutzer
Mitglied seit
02. Apr 2012
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Hallo,

der Post ist zwar schon sehr alt, aber konntest du das Problem lösen? Ich habe genau das gleiche Problem mit meiner DS1819+. Ich habe einfach nur das Docker Paket installiert, ein standard Ubuntu Image heruntergeladen und wollte dies starten.
Bums: "Docker-API ist fehlgeschlagen"

Im system log kann ich noch soetwas finden:
[67560.760987] overlayfs: filesystem on '/volume1/@docker/overlay2/opaque-bug-check297088676/l3' not supported

Hat jemand eine Idee?

Viele Grüße

Jeremia
 

kev.lin

Benutzer
Mitglied seit
17. Jul 2007
Beiträge
623
Punkte für Reaktionen
38
Punkte
48
Ist Dein Volume1 btrfs oder ext4?
Ich meine mich zu erinnern, dass Docker nur auf btrfs läuft. Korrigiert mich, wenn ich falsch liege.
 

Jeremia

Benutzer
Mitglied seit
02. Apr 2012
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Mein Volume ist ext4, damit könnte Deine Theorie zutreffen.
Andererseits habe ich Docker bereits in der Vergangenheit mit ext4 verwendet. Kann das neu sein, dass man btrfs benötigt?
 

Jeremia

Benutzer
Mitglied seit
02. Apr 2012
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Folgendes habe ich auf der Docker Seite gefunden:

overlay, overlay2: ext4, xfs
aufs: ext4, xfs
devicemapper: direct-lvm
btrfs: btrfs
zfs: zfs

Wenn ich nicht ganz falsch liege, dann müsste demnach ext4 gehen.
 

kev.lin

Benutzer
Mitglied seit
17. Jul 2007
Beiträge
623
Punkte für Reaktionen
38
Punkte
48
Ich meine mal gelesen zu haben, dass btrfs die Anforderung von der Synology-Docker-Implementierung ist. Aber vielleicht bringe ich da auch etwas durcheinander.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Läuft mit ext4 formatierten Volumes auch mit dem Storage Driver aufs.
Overlayfs läuft auf der Syno nicht. Der Hinweis darauf ist demnach keine Überraschung.
Auf der Shell kann man sich die relevanten Details anzeigen lassen: `docker info | grep -E 'Storage|Root Dir|Backing'`

Dank der tollen Anoymisierung oben rate ich jetzt mal: es wurde ein Container aus einem Base-Image erzeugt, der ootb nicht lauffähig ist.
 

Jeremia

Benutzer
Mitglied seit
02. Apr 2012
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Du liegst zweimal richtig:

1. aufs Storage Driver funktioniert.
2. Ja es handelt sich um einen der Verfügbaren Container (standard ubuntu image). Ich wollte einfach irgendeines testen.

Ich habe das so verstanden, dass es nicht an Docker liegt, sondern eher an dem Docker-Paket von Synology. Es dürfte eigentlich keinen Grund geben, dass das nicht auch mit overlayfs funktioniert. Wenn dem so ist, dann finde ich das wirklich ziemlich armselig von Synology.
 
Zuletzt bearbeitet von einem Moderator:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Zu 1) auf ext4 ist derunter Syno funktionierende Storage Driver. Unter btrfs ist es btrfs selbst.
Zu 2) hier kann schon das Problem liegen. Welches Image:Tag genau wurde verwendet?

Overlayfs ist in der Docker-Welte eine Option unter vielen - die meines Wissens nach von keinem Kernel aller DS'en unterstützt werden. Das im Log ist ein Fehler seine eine Warning oder Info; wenn es ein harter Fehler wäre und Docker nicht ohne leben könnte.... würde Docker überhaupt nicht funktionieren.
 

Jeremia

Benutzer
Mitglied seit
02. Apr 2012
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Zu 2) ich habe einfach ubuntu:latest verwendet.

Die LOG ausgabe ist ein Fehler. Es wird danach nichtmal der Container mit seinen Einstellungen gespeichert. Mit "aufs" funktioniert nun aber alles.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Mit folgendem Befehl kann man sich anzeigen lassen, welches Skript bzw. welcher Befehl als ENTRYPOINT und/oder CMD im Image hinterlegt ist. Diese gelten per Default für einen daraus erzeugten Container (können durch Parameter beim Container erzeugen auf Wunsch anders gesetzt werden).
Code:
# optional: docker pull ubuntu:latest 
docker history ubuntu:latest | grep -E 'CMD|ENTRYPOINT'

Ausgabe:
root@dsm:~# docker history ubuntu:latest | grep -E 'CMD|ENTRYPOINT'
775349758637 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"]

Wenn eine Skript als ENTRYPOINT angegeben ist, dann wird dieses als Startbefehl und CMD dann als Default-Argument an den Start-Befehl übergeben. Wenn ENTRYPOINT nicht definiert ist, wird CMD als Startbefehl verwendet. Die Argumente nach Image:Tag werden dann als Parameter an ENTRYPOINT bzw. CMD übergeben.

Sprich, bei Ubuntu:latest ist kein Entrypoint-Skript hintelegt, und der Default command ist /bin/bash - ein Prozess der ohne Interactive Terminal sofort wieder geschlossen wird. Du hast in Deinem Besipiel oben dem Command /bin/bash das Argument /bin/bash übergeben, was dazu führt das der angelegte Container sofort beendet wird, da nichts den Prozess am leben hält. Dasselbe Problem hast Du eben auch, wenn Du das ganze über die UI startest.

`docker run -d ubuntu:latest` # Container wird sofort beendet, gilt auch wenn /bin/bash zusätzlich hinter dem Parameter angegeben wird
`docker run -d ubuntu:latest tail -f /dev/null` # Container läuft weiter, da der Hauptprozess mit 'tail -f' blockiert ist.
`docker run -d -t ubuntu:latest # Container läuft weiter, da ein Terminal im Container den Prozess offen hält

Zu Deinem zweiten Satz: verstehe ich nicht.
 

Heidi

Benutzer
Mitglied seit
05. Aug 2019
Beiträge
283
Punkte für Reaktionen
42
Punkte
34
Hallo zusammen auch ich habe dasselbe Problem neuerdings.

Nach der Neuinstallation von Docker klappt es nicht mehr. Ich arbeiten auf eine 1819+ und wenn dich sudo docker info eintippe dann sagt er mit in dem log, dass der treiber overay2 ist. Genau das ist eben auch der Fehler ovaylay2 kann nicht verwendet werden. Auf einer anderen NAS (DS218+) läuft docker super. Dort steht dann auch drin, dass der mit dem aufs-treiber läuft.

Meine Frage, wie oder wo kann ich angeben, dass Docker mit dem aufstreiber anstelle des overlay2 arbeitet. Habe ein ext4 filesystem.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103

Heidi

Benutzer
Mitglied seit
05. Aug 2019
Beiträge
283
Punkte für Reaktionen
42
Punkte
34
Hallo haydibe.

DANKE !! Das hat geholfen. Jetzt läuft es.

Es war wie vermutet: Das Dockerpaket hat beim starten von Docker den overlay2-Treiber verwendet. Dieser ist korrupt. Ich habe also die deamon.json-Datei modifiziert. Sie heißt bei synology dockerd.json und liegt unter

HTML:
/var/packages/Docker/etc/

habe sie modifiziert

Rich (BBCode):
sudo nano /var/packages/Docker/etc/dockerd.json

und die Zeile mit dem Storage-driver eingefügt um den auf "aufs" zu erzwingen.
Rich (BBCode):
{
   "data-root" : "/var/packages/Docker/target/docker",
   "storage-driver": "aufs",
   "log-driver" : "db",
   "registry-mirrors" : []
}
gespeichert und Docker neu gestartet erbringt folgende Docker-info
Rich (BBCode):
/$ sudo docker info
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 18.09.6
Storage Driver: aufs
 Root Dir: /volume2/@docker/aufs
 Backing Filesystem: extfs
 Dirs: 13
 Dirperm1 Supported: true

"aufs" läuft. Docker läuft, Container geht. Mann, was habe ich heute rumgesucht (und am Ende ein Ticket eröffnet, das ich jetzt gleichg schließen kann.

Danke dir! :eek:
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat