docker - 有什么方法可以配置 Skaffold 以在我的本地 Docker 守护程序而不是 minikube 的守护程序上构建图像?
问题描述
我在 Linux 上使用 minikube 和 Docker 驱动程序。对于手动工作流程,我可以在 minikube 中启用注册表插件,将我的图像推送到那里并在部署配置文件中将它们简单地引用为localhost:5000/anything
. 然后它们被其 Docker 守护进程拉到 minikube 的环境中,并在此处成功开始部署。结果,我将所有基本图像都保存在我的本地设备上(当我使用本地 Docker 守护程序构建图像时),并且 minikube 的环境仅被其 Docker 守护程序拉取的图像弄乱了。
我可以在使用 Skaffold 时实现相同的工作流程吗?默认情况下,Skaffold 使用 minikube 的环境来构建镜像和运行容器,并且它在 minikube 中复制(有时甚至三重复制)我的镜像(不知道为什么)。
解决方案
Skaffold 直接构建到 Minikube 的 Docker 守护程序作为优化,以避免在推送到注册表时需要额外的检索和解包。
我相信您的副本如下所示:
$ (eval $(minikube docker-env); docker images node-example)
REPOSITORY TAG IMAGE ID CREATED SIZE
node-example bb9830940d8803b9ad60dfe92d4abcbaf3eb8701c5672c785ee0189178d815bf bb9830940d88 3 days ago 92.9MB
node-example v1.17.1-38-g1c6517887 bb9830940d88 3 days ago 92.9MB
尽管这些图像具有不同的标签,但这些标签只是指向相同图像 ID 的指针,因此保留了一个图像。
Skaffold 通常会清理以前运行的剩余图像。所以你不应该看到 minikube 守护进程的空间不断增长。
顺便说一句:即使这些图像 ID 不同,图像也由多个图层组成,并且这些图层在图像之间共享。因此 Docker 报告的映像大小可能与实际消耗的磁盘空间不匹配。
推荐阅读
- c++ - 为什么没有默认构造函数就不能编译?
- docker - 将图像推送到 docker hub
- regex - PowerShell 在文件行为中查找和替换正则表达式
- python - Kodi ssh python 脚本 *没有文件或目录*
- pandas - pandas split-apply-combine 与返回原始 DataFrame 的结果
- java - Checkstyle 找不到 suppresss.xml
- python - HackerRank 分类超时问题
- javascript - 转换为 JSON 时,现有的 python3 Ordered Dict 到 JSON 对象没有保持其顺序
- debian - 查看 .deb 存档的内容文件
- python - Python Boxplot 颜色映射