我正在使用docker并希望通过在ubuntu映像上的zip文件中安装应用程序来创建一个最小的新层。 ubuntu映像既没有安装wget也没有解压缩,所以我使用apt-get安装它们,这需要先apt-get update
docker run -it --name app_container ubuntu:latest
# now i have terminal access to the fresh app_container
# install wget and unzip
apt-get update
apt-get install wget -y
apt-get install unzip -y
# download and unpack the app
# ...
# remove wget and unzip
apt-get purge unzip
apt-get purge wget
# i need to remove some dependencies of wget that are no longer needed
apt-get autoremove
此时如果新的docker层的唯一内容是新应用程序,但仍有apt-get update
创建/更新的文件,那将是很好的。我尝试使用
apt-get clean
但是
docker diff app_container
显示还有很多已更改的文件(不属于该应用)。好的,所以它们的大小可以忽略不计(主要是/etc/ssl
和/var/lib/dpkg/info
中的一些剩余wget证书以及/var/lib/app/lists
中的23MB归档文件),但本着最干净的docker层的精神:是还有一种聪明的方法可以删除它们吗? ('聪明'意思是不诉诸暴力rm)
答案 0 :(得分:2)
使用apt-get更新应与同一层中的rm -rf /var/lib/apt/lists/*
配对。
使用此在线工具进行一些优化和清晰度检查: https://www.fromlatest.io/
答案 1 :(得分:1)
似乎没有比删除/ var / lib / app / lists
中的所有内容更好的建议