Alpine 이미지를 사용하여 Dockerfile을 만들 때 나는 종종를 사용하는 apk --no-cache
것을 보았습니다 rm /var/cache/apk/*
.
를 사용 --no-cache
하면 나중에 rm /var/cache/apk/*
. 또한 한 스타일이 다른 스타일보다 선호되는지 알고 싶습니다.
답변:
이 --no-cache
옵션은 인덱스를 로컬로 캐시하지 않도록 허용하므로 컨테이너를 작게 유지하는 데 유용합니다.
말 그대로 apk update
시작과 rm -rf /var/cache/apk/*
끝이 동일합니다.
--no-cache
옵션 을 사용하는 몇 가지 예 :
$ 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 ..
--no-cache
옵션을 사용하지 않는 또 다른 예 :
$ 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'
보시다시피 두 경우 모두 유효합니다. 저는 --no-cache
옵션을 사용하는 것이 더 우아합니다.
--no-cache
더 우아 하다는 데 동의합니다 . 그러나 여러 apk add --no-cache
명령을 사용하면 색인 파일이 매번 다운로드됩니다. 이 경우 apk update
상단 rm -rf /var/cache/apk/*
에서 하단 근처 에서 할 수 있는 네트워크 채팅이 적습니다 . 일부 패키지는 추가 --virtual
되고 일부는 추가 되지 않을 때 정말 중요 합니다.
디자인 스타일이라고 생각합니다. 캐시의 본질은 재사용하는 것입니다. 예를 들어 여러 컨테이너가 네트워크에서 반복적으로 다운로드하지 않고도 동일한 캐시 파일 시스템을 마운트 할 수 있습니다.
apline wiki를 볼 수 있습니다 : https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Local_Cache
--no-cache
그렇게 존재 하지 않는 해야rm /var/cache/apk/*
나중에