Donnerstag, Mai 28, 2020

Alpine Dockerfile Vorteile –no-cache Vs. rm /var/cache/apk/*

Beim erstellen von Dockerfiles mit dem Alpine Bild, habe ich oft gesehen, die Nutzung der apk --no-cache und zu anderen Zeiten ist es verpflichtet, und stattdessen sehe ich rm /var/cache/apk/*.

Ich bin neugierig zu wissen, die Nutzung der --no-cache eliminiert die Notwendigkeit, später einen rm /var/cache/apk/*. Ich würde auch gerne wissen, wenn man Stil ist wichtiger als ein anderes.

  • Mein Verständnis ist, dass die --no-cache ist es so dass Sie nicht haben zu tun rm /var/cache/apk/* später auf

2 Kommentare

  1. 55

    Den --no-cache option erlaubt nicht cache die index lokal, was nützlich ist für die Aufbewahrung Behälter kleine.

    Wörtlich gleich apk update am Anfang und rm -rf /var/cache/apk/* am Ende.

    Einige Beispiel, wo wir --no-cache option:

    $ docker run -ti alpine:3.7
    /# apk add nginx
    WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory
    WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: No such file or directory
    ERROR: unsatisfiable constraints:
      nginx (missing):
        required by: world[nginx]
    /# 
    /# apk add --no-cache nginx
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
    (1/2) Installing pcre (8.41-r1)
    (2/2) Installing nginx (1.12.2-r3)
    Executing nginx-1.12.2-r3.pre-install
    Executing busybox-1.27.2-r7.trigger
    OK: 6 MiB in 13 packages
    /# 
    /# ls -la /var/cache/apk/
    total 8
    drwxr-xr-x    2 root     root          4096 Jan  9 19:37 .
    drwxr-xr-x    5 root     root          4096 Mar  5 20:29 ..
    

    Weiteres Beispiel, wo wir nicht verwenden --no-cache option:

    $ docker run -ti alpine:3.7
    /# apk add nginx
    WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory
    WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: No such file or directory
    ERROR: unsatisfiable constraints:
      nginx (missing):
        required by: world[nginx]
    /# 
    /# apk update
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
    v3.7.0-107-g15dd6b8ab3 [http://dl-cdn.alpinelinux.org/alpine/v3.7/main]
    v3.7.0-105-g4b8b158c40 [http://dl-cdn.alpinelinux.org/alpine/v3.7/community]
    OK: 9048 distinct packages available
    /# 
    /# apk add nginx
    (1/2) Installing pcre (8.41-r1)
    (2/2) Installing nginx (1.12.2-r3)
    Executing nginx-1.12.2-r3.pre-install
    Executing busybox-1.27.2-r7.trigger
    OK: 6 MiB in 13 packages
    /# 
    /# ls -la /var/cache/apk/
    total 1204
    drwxr-xr-x    2 root     root          4096 Mar  5 20:31 .
    drwxr-xr-x    6 root     root          4096 Mar  5 20:31 ..
    -rw-r--r--    1 root     root        451508 Mar  3 00:30 APKINDEX.5022a8a2.tar.gz
    -rw-r--r--    1 root     root        768680 Mar  5 09:39 APKINDEX.70c88391.tar.gz
    /# 
    /# rm -vrf /var/cache/apk/*
    removed '/var/cache/apk/APKINDEX.5022a8a2.tar.gz'
    removed '/var/cache/apk/APKINDEX.70c88391.tar.gz'
    

    Wie Sie sehen können beide Fälle gültig sind. Als für mich, mit --no-cache option ist eleganter.

Kostenlose Online-Tests