Docker 镜像是从 Dockerfile 构建的。Dockerfile 包含一组指令,可让您自动执行通常(手动)创建映像所采取的步骤。此外,它还可以包含一些导入的库并安装自定义软件。这些在 Dockerfile 中显示为指令。
构建您的图像是该镜像的快照,在那个时刻。当你依赖一个没有标签的基础镜像时,你每次重建都会得到一个不同的基础镜像。此外,当您使用软件包安装程序安装软件包时,重建会彻底改变镜像。例如,包含以下条目的 Dockerfile 可能在每次重建时具有不同的二进制文件。
FROM ubuntu:latest
RUN apt-get -y update && apt-get install -y python
我们建议您定期重建 Docker 映像,以防止已解决的已知漏洞。重建时,使用该选项–no-cache避免缓存命中并确保全新下载。
例如:
$docker build –no-cache -t myImage:myTag myPath/
重建镜像时请考虑以下最佳实践:
1.每个容器应该只有一个职责。
2.容器应该是不可变的、轻量级的和快速的。
3.不要将数据存储在您的容器中。请改用共享数据存储。
4.容器应该易于销毁和重建。
5.使用小型基础镜像(例如 Linux Alpine)。较小的镜像更容易分发。
6.避免安装不必要的软件包。这样可以保持镜像干净和安全。
7.构建时避免缓存命中。
8.在部署之前自动扫描您的镜像,以避免将易受攻击的容器推向生产环境。
9.在开发和生产期间每天扫描您的镜像是否存在漏洞基于此,如有必要,自动重建镜像。