问题描述
我试图对Docker最佳实践有一个很好的了解,并且试图澄清一件事:
创建和共享有什么区别
- 通过git repo(例如
Dockerfile
,requirements.txt
)进行docker构建配置 - 并通过注册表(例如Docker Hub)保存和共享Docker映像?
在第一种情况下,我们必须克隆存储库并运行docker build来创建映像。
这意味着您可以通过运行通过git存储库共享的代码的构建来创建多个图像。
在开始使用Docker或从事个人项目(从Docker开始)时,存储和共享“ Docker代码”(由于缺乏更好的术语)的最佳常规做法是什么?
解决方法
TL; DR
将image
推送到公共存储库将使其他人可以pull
构建image
并run
。提供对源代码和Dockerfile
的访问权限将使其他人可以build
在本地进行映像。它们不是互斥的。
例如,我将公共映像发布到Docker Hub,以便在Kubernetes中运行self-hosted GitHub Actions Runners。使用来自公共GitHub Actions的GitHub repository完成发布。我计划支持released versions (tag
ged builds from a git tag
)(例如,如果有人安装了已发布的版本并报告了问题),但与此同时,人们也可以根据需要为{{3} +1)提供所有可用的工具。无限制地操作(opensource)-说您想向运行程序图像添加一些apt
程序包,只需eeet然后构建并使用您自己的图像(...和如果对其他用户有意义,则可以考虑使用所做的更改创建一个MIT License。
您绝对可以托管一个私有存储库并发布公共图像,但是请注意,如果您要隐藏自己的codez
,那么您应该期望像我这样的人might be able to host a public repository with a proprietary license but would need to confirm the legality来image
我会尝试使用它,因此建议您构建编译的二进制文件(即inspect
构建的go
程序。)
您也绝对可以托管私人仓库,并将您的图片发布到FROM scratch
,然后控制对图片的访问(即分发配置了您的私人图片的private docker registry,并要求客户docker-compose.yml
pull
图片)。