Hallo liebe Forengemeinde!
Ich sitze jetzt seit zwei Tagen an folgendem Problem:
Ich habe bislang 4 Dockercontainer auf einer 716+ii, aktuellstes DSM, aktuellster Docker, einwandfrei laufen. Nun wollte ich noch einen Watchtower-Container hinzufügen und zwar wie folgt:
1. Docker-GUI in der DSM-Oberfläche geöffnet, parallel in der Shell als root eingeloggt.
2. Shell: docker pull containrrr/watchtower:0.3.4
3. Shell: docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:0.3.4 --debug
Soweit so gut, um die weitere optionale Umgebungsvariablen wollte ich mich später kümmern. Das Image also wurde heruntergeladen, der Container generiert. In diesem Moment ist mir aufgefallen, dass ich eigentlich das Image von v2tec und nicht von containrrr verwenden wollten und klickte ins Docker-GUI, um dort den frisch generierten Container zu stoppen und zu löschen (zwei Klicks kamen mir schneller vor als die commands über die Shell). Dabei fiel mir auf, dass nicht nur der Watchtower-Container, sondern auch noch ein weiterer Container generiert wurde (wohl vom Watchtower-Container, woher sonst?), der als brave_galileo bezeichnet war. Leider hab ich in dem Moment nicht aufgepasst und zu schnell beide Container über das Docker-GUI gelöscht.
In weiterer Folge hab ich also das containrrr-Image gelöscht und das eigentlich gewünschte Image v2tec/watchtower:latest geladen und sodann über die Shell wie in Punkt 3 versucht, wieder einen neuen Container, diesmal vom v2tec-Image, zu generieren. Das funktioniert auch soweit, aber die generierten Container stoppen sofort und geben folgende Log aus:
time="2019-04-30T18:03:17Z" level=fatal msg="Error: No such image: sha256:fb8e13603349ba1aa02bc3cd99e5a39e046990e8b5cf7d7db039a4b46c0e0b04"
Seither, hab ich x-Mal versucht neue Container aus allen möglichen Images zu generieren (immer über die Shell), hab dazu auch sowohl von containrrr als auch v2tec alle Images geladen die es gibt (pull -a), bekomm aber immer exakt den gleichen Error-Log.
Ich hab natürlich auch schon Google an den Rand des Gebrechens gebracht und gelesen, dass der sha256 scheinbar ein Docker-Registry-Eintrag ist, auf den immer wieder Bezug genommen wird. Der sha256 gehört also zu einem ganz bestimmten Image, welches ich so aber nicht mehr finde (ich hab alle sha256 mittels docker images ls -a geprüft, nachdem ich ALLE v2tec und containrrr/watchtower Images geladen hatte, der im Error-Log genannten ist nicht dabei). Dennoch nimmt docker run scheinbar immer wieder nur auf diesen einen sha256:fb8e136033[...] Bezug.
Nun meine Frage:
Was muss ich tun, dass docker run ganz wie gewohnt nicht statisch auf den oben genannten sha256-Wert Bezug nimmt (der keine Ahnung zu welchem Image gehört - jedenfalls keines mehr, was ich im Repository hab), sondern den sha256-Wert des im docker run Befehls angeführten Images:Tag heranzieht?
Ich hab Lösungen gefunden, von wegen Registry-Einträge manuell löschen, wo in manifest-Folders die sha256-Einträge liegen. Dabei stoße ich vor das Hinderniss, dass ich mit Curl keine Registryeinträge löschen kann (Error 405, not allowed) und mittels Shell-befehl rm keine Löschungen vornehmen kann, weil ich meine docker-registry nicht finden kann (jedenfalls nicht in /var/lib/...).
Ich bin für jeden Vorschlag sehr dankbar, da mein Docker im aktuellen Zustand "handlungsunfähig" ist.
Da es sich scheinbar um ein docker-spezifisches Problem handelt: würde im worst case eine Docker De- und Reinstallation über das Paketzentrum nützen, um den verkorxten Zustand auf "Werk" zurücksetzen?
Ist es möglich mittels docker run nicht nur auf das gewünschte Image:Tag (zB containrrr/watchtower:0.3.4) zu verweisen, sondern docker run direkt anzuweisen, ein bestimmtes Image mit einem bestimmten sha256 zur Containererstellung zu verwenden? Somit könnte ich diesen "automatischen" Verweis auf den nicht existenten sha256:fb8e136033[...] doch gewissermaßen übergehen ...
Lieber wäre mir aber natürlich, docker run würde wie gewohnt einfach das Image mit dem Tag (und dem damit verbundenen sha256) heranziehen, welches ich ihm im run commando übergebe.
Vielen Dank schonmal für eure Rückmeldungen!
LG
Chris
EDIT:
Ich habs gestern nicht mehr gefunden und heute am ersten Blick am Schirm gehabt: ich kann mittels docker run image@digest scheinbar auf einen ganz bestimmten sha256-Wert verweisen, müsste so also laufende Container aus meinem gewünschten Image im Repository erzeugen können. Ich kann es nur leider frühestens in 2 Tagen wieder testen, da ich bis dahin keinen Shell-Zugriff auf meine Syno hab (SSH-Ports sind nur lokal offen, ich bin unterwegs).
Aber selbst wenn das funktionieren würde, müsste ich dann künftig trotzdem bei jedem Container den ich erstellen möchte, zwingend mit @digest arbeiten, solange Docker von sich aus nur auf diesen einen bestimmten sha256:fb8e136033[...] verweist, wenn er nur einen Tag (zB latest) übergeben bekommt (was aber die wesentlich benutzerfreundlichere Variante ist
Ich sitze jetzt seit zwei Tagen an folgendem Problem:
Ich habe bislang 4 Dockercontainer auf einer 716+ii, aktuellstes DSM, aktuellster Docker, einwandfrei laufen. Nun wollte ich noch einen Watchtower-Container hinzufügen und zwar wie folgt:
1. Docker-GUI in der DSM-Oberfläche geöffnet, parallel in der Shell als root eingeloggt.
2. Shell: docker pull containrrr/watchtower:0.3.4
3. Shell: docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:0.3.4 --debug
Soweit so gut, um die weitere optionale Umgebungsvariablen wollte ich mich später kümmern. Das Image also wurde heruntergeladen, der Container generiert. In diesem Moment ist mir aufgefallen, dass ich eigentlich das Image von v2tec und nicht von containrrr verwenden wollten und klickte ins Docker-GUI, um dort den frisch generierten Container zu stoppen und zu löschen (zwei Klicks kamen mir schneller vor als die commands über die Shell). Dabei fiel mir auf, dass nicht nur der Watchtower-Container, sondern auch noch ein weiterer Container generiert wurde (wohl vom Watchtower-Container, woher sonst?), der als brave_galileo bezeichnet war. Leider hab ich in dem Moment nicht aufgepasst und zu schnell beide Container über das Docker-GUI gelöscht.
In weiterer Folge hab ich also das containrrr-Image gelöscht und das eigentlich gewünschte Image v2tec/watchtower:latest geladen und sodann über die Shell wie in Punkt 3 versucht, wieder einen neuen Container, diesmal vom v2tec-Image, zu generieren. Das funktioniert auch soweit, aber die generierten Container stoppen sofort und geben folgende Log aus:
time="2019-04-30T18:03:17Z" level=fatal msg="Error: No such image: sha256:fb8e13603349ba1aa02bc3cd99e5a39e046990e8b5cf7d7db039a4b46c0e0b04"
Seither, hab ich x-Mal versucht neue Container aus allen möglichen Images zu generieren (immer über die Shell), hab dazu auch sowohl von containrrr als auch v2tec alle Images geladen die es gibt (pull -a), bekomm aber immer exakt den gleichen Error-Log.
Ich hab natürlich auch schon Google an den Rand des Gebrechens gebracht und gelesen, dass der sha256 scheinbar ein Docker-Registry-Eintrag ist, auf den immer wieder Bezug genommen wird. Der sha256 gehört also zu einem ganz bestimmten Image, welches ich so aber nicht mehr finde (ich hab alle sha256 mittels docker images ls -a geprüft, nachdem ich ALLE v2tec und containrrr/watchtower Images geladen hatte, der im Error-Log genannten ist nicht dabei). Dennoch nimmt docker run scheinbar immer wieder nur auf diesen einen sha256:fb8e136033[...] Bezug.
Nun meine Frage:
Was muss ich tun, dass docker run ganz wie gewohnt nicht statisch auf den oben genannten sha256-Wert Bezug nimmt (der keine Ahnung zu welchem Image gehört - jedenfalls keines mehr, was ich im Repository hab), sondern den sha256-Wert des im docker run Befehls angeführten Images:Tag heranzieht?
Ich hab Lösungen gefunden, von wegen Registry-Einträge manuell löschen, wo in manifest-Folders die sha256-Einträge liegen. Dabei stoße ich vor das Hinderniss, dass ich mit Curl keine Registryeinträge löschen kann (Error 405, not allowed) und mittels Shell-befehl rm keine Löschungen vornehmen kann, weil ich meine docker-registry nicht finden kann (jedenfalls nicht in /var/lib/...).
Ich bin für jeden Vorschlag sehr dankbar, da mein Docker im aktuellen Zustand "handlungsunfähig" ist.
Da es sich scheinbar um ein docker-spezifisches Problem handelt: würde im worst case eine Docker De- und Reinstallation über das Paketzentrum nützen, um den verkorxten Zustand auf "Werk" zurücksetzen?
Ist es möglich mittels docker run nicht nur auf das gewünschte Image:Tag (zB containrrr/watchtower:0.3.4) zu verweisen, sondern docker run direkt anzuweisen, ein bestimmtes Image mit einem bestimmten sha256 zur Containererstellung zu verwenden? Somit könnte ich diesen "automatischen" Verweis auf den nicht existenten sha256:fb8e136033[...] doch gewissermaßen übergehen ...
Lieber wäre mir aber natürlich, docker run würde wie gewohnt einfach das Image mit dem Tag (und dem damit verbundenen sha256) heranziehen, welches ich ihm im run commando übergebe.
Vielen Dank schonmal für eure Rückmeldungen!
LG
Chris
EDIT:
Ich habs gestern nicht mehr gefunden und heute am ersten Blick am Schirm gehabt: ich kann mittels docker run image@digest scheinbar auf einen ganz bestimmten sha256-Wert verweisen, müsste so also laufende Container aus meinem gewünschten Image im Repository erzeugen können. Ich kann es nur leider frühestens in 2 Tagen wieder testen, da ich bis dahin keinen Shell-Zugriff auf meine Syno hab (SSH-Ports sind nur lokal offen, ich bin unterwegs).
Aber selbst wenn das funktionieren würde, müsste ich dann künftig trotzdem bei jedem Container den ich erstellen möchte, zwingend mit @digest arbeiten, solange Docker von sich aus nur auf diesen einen bestimmten sha256:fb8e136033[...] verweist, wenn er nur einen Tag (zB latest) übergeben bekommt (was aber die wesentlich benutzerfreundlichere Variante ist
Zuletzt bearbeitet: