【问题标题】:Dockerfile FROM command - Does it always download from Docker Hub?Dockerfile FROM 命令 - 它总是从 Docker Hub 下载吗?
【发布时间】:2022-10-22 06:35:57
【问题描述】:

我这周刚开始使用 docker,遇到了一个“dockerfile”。我正在阅读该文件的作用,官方文档基本上提到需要 FROM 关键字来构建“基础映像”。这些基础镜像是从 Docker hub 拉取的,或者是从那里下载的。

愚蠢的问题 - 是否总是从 docker hub 中提取基本图像?

如果是这样并且如果我理解正确,我假设运行 dockerfile 来创建图像不是很频繁(仅在需要创建图像时),并且一旦创建了图像,那么图像就一直在运行?

那么dockerfile可以迁移到哪个环境并且可以快速重新设置?

请原谅我只是想了解整个流程以及 dockerfile 如何适应事物的愚蠢问题。

【问题讨论】:

    标签: docker dockerfile docker-image


    【解决方案1】:

    如果本地(在您的主机上)Docker 守护程序(已经)具有由FROMDockerfile 中指定的容器映像的副本(即它一直是docker pull'd),那么它会被缓存并且不会被撤回。

    容器图像包括一个标签(小心使用latest)和图像名称,例如foo 结合标签(默认为latest,如果未指定)是检查的图像的全名,即如果您在本地有foo:v0.0.1FROM:v0.0.1,则使用本地副本但FROM foo:v0.0.2 将拉foo:v0.0.2

    有一个隐含的 docker.io 前缀,即 docker.io/foo:v0.0.1,它引用了正在使用的 Docker 注册表。

    您可以在运行容器的机器上重复 docker build 容器映像,但这效率低下,更常见的机制是,一旦构建容器映像,它就会被推送到注册表(例如 DockerHub),然后从那里拉出任何机器需要它。

    有很多容器注册中心:DockerHub、Google Artifact RegistryQuay 等。

    除了docker 之外,还有一些工具可用于与容器交互,例如(红帽)Podman

    【讨论】:

    • 在这个注释@DazWilkin,我可以问另一个问题来扩展我的知识。假设我通过 dockerfile 创建 docker 映像。然后由于一些错误 docker build 退出而不执行所有命令。现在,不是重建图像,而是进入迭代模式并通过命令行进行更改。说安装包。 docker 是否将此图像同步到预期的推送位置(并且我可以强制推送它),并在交互模式下进行了最新更改。或者它只是在我们退出本地终端的迭代模式时丢弃这些更改。
    • 请不要在 cmets 中问后续问题。如果是另一个问题,请将其创建为另一个问题。
    • 进行交互式更改不是一个好习惯。容器的一个主要好处是它们是通过 Dockerfile 可重现的构建。如果你必须这样做,你可以使用docker commit
    • @DazWilkin - 感谢非常外行的 docker-101 解释 :) 只是想补充一下 - 所以如果我在执行“docker build”之后直接拥有这个,我会安装我想要的并且对容器图像感到满意,我称它为“greatstuff_v01”然后我会将其推送到 DockerHub?假设 DockerHub 有一个“私有”机制,假设另一台机器需要使用这个容器,然后我可以将这个“greatstuff_v01”私有容器映像拉到那台机器上并且它很好去,这是否公平?除非我允许,否则没有人能看到它?请原谅基本问题!
    • @rodneyc8063 是正确的。容器注册表支持身份验证以允许私有容器映像,如果需要,还允许公共容器映像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2019-11-21
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2021-03-07
    • 2017-09-06
    相关资源
    最近更新 更多