微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

\--no-cache Vs的Alpine Dockerfile的优势rm / var / cache / apk / *

如何解决\--no-cache Vs的Alpine Dockerfile的优势rm / var / cache / apk / *

--no-cache选项允许不在本地缓存索引,这对于保持容器较小非常有用。

从字面上看,它apk update在开头和rm -rf /var/cache/apk/*结尾相等。

我们使用--no-cacheoption的一些示例:

$ 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-cacheoption更为优雅。

解决方法

使用Alpine映像创建Dockerfile时,我经常看到apk --no-cache提交时使用和的用法,而是看到rm /var/cache/apk/*

我很好奇,知道利用--no-cache消除了以后再做的必要rm /var/cache/apk/*。我还想知道一种风格是否胜过另一种。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。