NPM unter Docker no space left on device.

merlin2k11

New member
Hallo, vielleicht kann mir jemand von euch weiterhelfen. Ich versuche, unter einem vServer mit 10 GB den npm (jc21/nginx-proxy-manager) zu installieren. Wenn ich im Docker Hub nachsehe, steht dort, dass es komprimiert 356,01 MB groß ist.

Wenn ich nun versuche, den Container zu installieren, mit...
docker run -d \
--name nginx-proxy-manager \
--hostname=NPM \
--restart unless-stopped \
--network macvlan_net \
--ip 192.168.20.10 \
-v $(pwd)/data:/data \
-v $(pwd)/letsencrypt:/etc/letsencrypt \
jc21/nginx-proxy-manager:latest

Erhalte ich nach kurzer Zeit
latest: Pulling from jc21/nginx-proxy-manager

2cc3ae149d28: Pull complete
6544023465b3: Pull complete
c065d8de7504: Pull complete
8922971bc854: Pull complete
a239396c7824: Pull complete
10afcc364e9b: Pull complete
22f1d577d013: Pull complete
48f4bd7290ac: Pull complete
f62da1a421b6: Pull complete
4651a459a8ee: Pull complete
205c2f93f140: Pull complete
24865e1f5d93: Pull complete
d614f2c5f125: Pull complete
36f12f3bf50b: Pull complete
6727ab8af2d4: Pull complete
58e25ead3cf3: Pull complete
6004d70eb4db: Pull complete
0546c27e812a: Pull complete
55bb40394026: Pull complete
f2400502f06b: Pull complete
5c9af8482b2d: Pull complete
a8aa7162dcbf: Pull complete
b9cd7b75227b: Pull complete
53008037a857: Pull complete
4315d1b19d84: Extracting [==================================================>] 652B/652B
e32f8e69daca: Download complete
67aed05dfe20: Download complete
ded98a17bcce: Download complete
b1abdb2aadfd: Download complete
4f4fb700ef54: Download complete
186b43e76ce2: Download complete
a52aaf87fc54: Download complete
4a261e6e44f0: Download complete
docker: failed to register layer: no space left on device.
See 'docker run --help'.
Ich erhalte den Fehler, dass die Festplatte voll ist.

Theoretisch stehen mir für Docker 8,7 GB zur Verfügung. Wie kann es dann sein, dass die Festplatte während des Erzeugens auf 100 % anwächst?

Gibt es einen Trick (abgesehen von zusätzlichem Speicher, was nicht möglich ist), um den Container zu erzeugen?

Filesystem Size Used Available Use% Mounted on
overlayfs:/overlay 9.4G 294.1M 8.7G 3% /opt/docker
Vielen dank im Voraus
Armin
 
du -sh /var/lib/docker
du: /var/lib/docker: No such file or directory
Es ist kein "normales" Linux. Ich betreibe das Docker auf einem openwrt. Dort ist wahrscheinlich das was du suchst /opt/docker

------------

Edit:
Auch während ich das Image bauen lasse, sehe ich im zweiten Fenster, wie /opt/docker immer voller wird.

Was mich nur wundert, ist, dass zum Bauen 8,7 GB benötigt werden.

Selbst bei Portainer, wo das Image angezeigt wird, ist es nur 300–400 MB groß, obwohl die Festplattenbelegung 4,4 GB beträgt.

Ein docker prune bringt ebenfalls keinen freien Platz.
 
Zuletzt bearbeitet:
Code:
docker image ls
Geht das? Mal das Ergebnis posten. Wenn da viel Müll ist, würde ich mal
Code:
docker image prune
oder
Code:
docker image prune -a
machen, um da aufzuräumen. Da sammelt sich nämlich manchmal ganz schön was an.
 
root@OpenWrt:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
portainer/portainer-ce latest 744a24a2496a 22 hours ago 301MB

root@OpenWrt:~# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

root@OpenWrt:~# docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: portainer/portainer-ce:latest
untagged: portainer/portainer-ce@sha256:a5e6d58c93bea2988b604f9c9b1afaa30dc213532dfd9beb7774429146276604
deleted: sha256:744a24a2496a5fe0a9d744fe6c953699361a0829eb623e1d2a4cb268fa3a725e
deleted: sha256:afea7a5b7990b3c4a66f296dee48e22a7c7c44871e492f203c2dc6f613f3fc18
deleted: sha256:3de27dd7a23b57ca7f0340331212b714afc49da103120503f60ae61dbc39a4ed
deleted: sha256:9971c8a24e7738c4fbc5106f80ccdf8dac67920f784fac871e228df6d7fe1672
deleted: sha256:5b5c9673882b0736b16ec30f8c64e4bb3d87e99b9f9cf9537622f9ccd14b15f5
deleted: sha256:376b2155947f9ea959ed469badbd4583f7da21186711d00a7c72e14d1cc8b8d1
deleted: sha256:c2691de3a1f9395d1b967debd27230832456159817224d8e676c9ac3f9b1f092
deleted: sha256:38bdc21fe423f0f8586de6dbe478c7bfd5491f4be15defbc3d1e9fc154fe2034
deleted: sha256:8baebd2d4d4ef0af603c5b36fc110475d8244ce3a9edf56f24fb359aada4afcf
deleted: sha256:bb8abe59362d040f34b98577918ec520339e6302bdf36f6db1cee09d25ae46b3
deleted: sha256:7e8263b6cb0dc453dc481743f6fd977f1feac5dca3e5a77de16bc010a789f57a
deleted: sha256:34b622ec5cc7ed652d052c6f905154970816b05ae6dd071b2f31dd0a0a014dcc

Total reclaimed space: 300.8MB
root@OpenWrt:~#
 

Anhänge

  • 5.png
    5.png
    189 KB · Aufrufe: 5
  • 4.png
    4.png
    203,5 KB · Aufrufe: 5
  • 3.png
    3.png
    197,3 KB · Aufrufe: 4
  • 2.png
    2.png
    199,6 KB · Aufrufe: 4
  • 1.png
    1.png
    197,6 KB · Aufrufe: 5
Teil mal bitte die Ausgabe von `docker info` (als Text im </> Code-Block).
Wenn hier als Storage Driver nicht Overlay2 (oder einer seiner Verwandten) verwendet wird, dann könnte das die Sache schon erklären.

Ich hoffe, in denen Screenshots steht nichts Relevantes. Ich persönliche schaue mir nie Screenshots von Textausgaben an, weil sie a) schwerer zu lesen sind und b) man aus ihnen nichts zitiert werden kann.
 
Code:
root@OpenWrt:/opt/docker# docker info
Client:
 Version:    27.1.1
 Context:    default
 Debug Mode: false
 Plugins:
  compose: Docker Compose (Docker Inc.)
    Version:  v2.18.1
    Path:     /usr/lib/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 27.1.1
 Storage Driver: vfs
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version:
 runc version:
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.150
 Operating System: OpenWrt 23.05.3
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 959.4MiB
 Name: OpenWrt
 ID: fccf1ea7-6274-4aea-ac0c-12453c1a4584
 Docker Root Dir: /opt/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support
root@OpenWrt:/opt/docker#

In den Screenshots ist eigentlich nur einmal ein Prozess des Image gezeigt, das die Festplatte auch wenn die Pakete nur kb groß sind die Festplatte mit GB größe belegen.
 
Storage Driver: vfs

Das ist so ziemlich der schlechteste Storage Driver, den man verwenden kann. Statt wie bei Overlay2 die ausgepackten Layer zu einem virtuellen Verzeichnis zu mergen, werden hier die Inhalte der vorigen Layer mit in das ausgepackte Verzeichnis der Layer kopiert - bis zum letzten Layer hat man die Daten der vorherigen Layer also in mehrfacher Ausprägung auf dem Datenträger. Jeder Container, der aus dem Image erzeugt wird, hat dann natürlich nochmal zusätzlich eine vollständige Kopie des Dateisystems.

Siehe: https://docs.docker.com/engine/storage/drivers/vfs-driver/

Die Größenangabe zeigt dabei nur die Größe des letzten Layers an, obwohl das Ganze auf dem Datenträger deutlich mehr speicher verbraucht.

Docker selbst empfiehlt nicht vfs zu verwenden:
https://docs.docker.com/engine/storage/drivers/select-storage-driver/#supported-storage-drivers-per-linux-distribution schrieb:
The vfs storage driver is intended for testing purposes, and for situations where no copy-on-write filesystem can be used. Performance of this storage driver is poor, and is not generally recommended for production use.
 
Das hier ist der Grund, warum vfs verwendet wird:
Code:
overlayfs:/overlay 9.4G 294.1M 8.7G 3% /opt/docker

Du könntest versuchen, ob es funktioniert hier stattdessen fuse-overlayfs zu konfigurieren. Wobei ich keine Ahnung habe, ob alle dafür notwenigen Dependencies vorhanden sind und wie performant das Ganze am Ende sein wird.

Es wäre besser, wenn das Dateisystem, dass in /opt/docker eingehangen ist ein ext4 oder xfs Dateisystem ist, damit hier der Overlay2 Storage Driver verwendet werden kann,

Zu OpenWRT: Es gibt übrigens bereits die Version 23.05.4. Ich hoffe Du hast Attended Sysupgrade installiert. Ohne machen OS Upgrades keinen Spaß.
 
Gibt es hier Neuigkeiten?

Ich hab mir eben das Image jc21/nginx-proxy-manager:latest mal näher angesehen: es gibt 32 Instructions (ADD/RUN/COPY) im Dockerfile die jeweils einen neuen Image-Layer erzeugen. Es ist kein Wunder das dieses Image mit dem vfs Storage Driver so viel Platz auf dem Datenträger einnimmt, wenn jeder ausgepackte Layer immer die vollständige Kopie der vorherigen ausgepackten Layer + die Daten des Layers selbst enthält.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.268
Beiträge
52.459
Mitglieder
5.019
Neuestes Mitglied
Jeff888
Zurück
Oben