--no-cache Vs的Alpine Dockerfile的优势。 rm / var / cache / apk / * [英] Alpine Dockerfile Advantages of --no-cache Vs. rm /var/cache/apk/*
问题描述
在使用Alpine映像创建Dockerfile时,我经常看到 apk --no-cache
的使用,而有时它是提交的,而我看到的是 rm / var / cache / apk / *
。
When creating Dockerfiles using the Alpine image, I have often seen the use of the apk --no-cache
and other times it is committed and instead I see rm /var/cache/apk/*
.
我很好奇知道使用-no-cache
不再需要以后执行 rm / var / cache / apk / *
。我还想知道一种样式是否胜于另一种样式。
I am curious to know making use of the --no-cache
eliminates the need to later do a rm /var/cache/apk/*
. I would also like to know if one style is favored over another.
推荐答案
-不cache
选项允许不在本地缓存索引,这对于保持容器较小非常有用。
The --no-cache
option allows to not cache the index locally, which is useful for keeping containers small.
从字面上看,它等于开始的 apk更新
和 rm -rf / var / cache / apk / *
结束。
Literally it equals apk update
in the beginning and rm -rf /var/cache/apk/*
in the end.
一些示例,我们使用-no-cache
选项:
Some example where we use --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 ..
另一个例如,我们不使用-no-cache
选项:
Another example where we don't use --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'
您可以看到两种情况都是有效的。对于我来说,使用-no-cache
选项更加优雅。
As you can see both cases are valid. As for me, using --no-cache
option is more elegant.
这篇关于--no-cache Vs的Alpine Dockerfile的优势。 rm / var / cache / apk / *的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!