如何在docker 重复build 过程避免产生虚悬镜像和docker 缓存
时间: 2024-11-09 07:18:52 浏览: 19
不使用不安全的镜像仓库-苹果ios11设计规范完整版(中文)
在Docker中,重复构建过程时避免虚悬镜像和利用缓存是非常重要的,因为这有助于提高构建效率并减少存储空间的占用。以下是两个关键点:
1. **使用`--no-cache`选项**:在每次构建时添加`--no-cache`标志,Docker会每次都从基础镜像开始完整地构建,不会使用之前的层。这样可以保证每次构建都是独立的,但可能会很慢,尤其是对于依赖很多层的复杂镜像。
```bash
docker build --no-cache -t myimage .
```
如果你想保留部分缓存,可以只清除特定的部分缓存,例如仅清除特定标签的缓存:
```bash
docker image prune --all
docker image prune --filter "dangling=true" --all
```
2. **利用`.dockerignore`文件**:创建一个`.dockerignore`文件,列出你不希望被缓存的文件或目录。比如,如果你不想把源码仓库的暂存文件保存到镜像中,可以在这个文件里指定它们。
3. **缓存策略**:如果构建过程大部分时间用于安装软件包或执行不变的任务,你可以让Docker自动识别哪些步骤已经完成并重用缓存。当有新改动时,才需要重新构建受影响的部分。通过设置`ARG`、`COPY`和`RUN`命令顺序合理,以及使用`FROM`指令,可以让Docker更智能地管理缓存。
4. **`--cache-to`选项**:这个高级选项允许你将部分缓存结果保存到一个新的镜像,以便于后续多次构建复用。例如:
```bash
docker build --cache-to type=local,mode=max,suffix=.docker-cached -t myimage .
```
然后,下次可以直接基于这个缓存镜像继续构建,无需整个过程。
阅读全文