共享 Dockerfile 和 Docker 镜像之间的区别?

ros*_*s-u 7 git repository organization docker docker-registry

我试图更好地理解 Docker 最佳实践并阐明以下内容之间的区别:

  1. 共享Dockerfile(规格/构建配置),包括特定于语言的配置文件(例如requirements.txtPython 或package.jsonNode )。

  1. 通过注册表(例如 Docker Hub)创建和共享 Docker 映像?

在第一种情况下,用户需要克隆存储库以获取规格并运行docker build以创建图像。

_

当开始使用 Docker 或处理个人项目时,存储和共享“Docker 代码”(由于缺乏更好的术语)的一般最佳实践是什么?

在什么情况下最好通过注册表共享构建的映像?

mas*_*eyb 5

长话短说

将其推image送到公共存储库将使其他人能够pull构建imagerun。提供对源代码的访问,Dockerfile并使其他人能够build在本地访问图像。它们并不相互排斥。


例如,我将公共映像发布到Docker Hub,以便在 Kubernetes 中运行自托管的 GitHub Actions Runner。这些发布是使用公共GitHub 存储库中的GitHub Actions完成的。我计划支持发布版本(ged 从 a 构建(即,如果有人安装发布版本并报告问题),但同时,如果人们也愿意的话,一切都可以供人们破解(开源+1 ),而无需限制你可以做的事情(麻省理工学院许可证) - 假设你想向运行者图像添加一些包,只需执行 eeet 然后构建并使用你自己的图像(...如果这对其他用户有意义,那么也许考虑创建包含更改的拉取请求)。taggit tagapt

也许能够使用专有许可证托管公共存储库,但需要确认其合法性

你绝对可以托管一个私人存储库并发布公共图像,但要注意,如果你试图隐藏你的图像codez,那么你应该期待像我这样的人,inspect如果image我得到了它,所以我建议构建编译的二进制文件(即go构建的程序)FROM scratch)。

您也绝对可以托管私有存储库并将图像发布到私有 docker 注册表,然后控制对图像的访问(即分发配置docker-compose.yml有您的私有图像并要求该客户docker login使用pull图像)。