2016 - 2024

感恩一路有你

使用docker做镜像后下载到本地 Docker镜像和容器的区别详解?

浏览量:3181 时间:2023-05-14 11:05:51 作者:采采

Docker镜像和容器的区别详解?

当您希望一个容器做两件事,或者让一个Docker映像包含来自两个不同映像的依赖库时,您需要知道每个映像的Dockerfile。本文介绍了如何通过dockerhistory命令对Docker图片进行逆向工程,获取它们的Docker文件,组织成一个Docker文件并进行构建,从而实现你想要做的事情。

常言道, "唐 不要多此一举! "

使用Docker时,在建立自己的镜像之前,最好先在DockerHub中找一些可以直接使用的镜像进行练习。将软件架构分布到一系列容器中是非常有效的,每个容器只做一件事。构建分布式应用程序的最佳基础是使用DockerHub的官方图像,因为它们的质量是可信的。

在某些情况下,您可能希望一个容器做两件不同的事情。在其他情况下,您可能希望Docker映像包含来自两个不同映像的依赖库。如果每个图像都有一个docker文件,这就非常简单了。将它们组织到Dockerfile文件中并构建它们。

但是大部分时候都是使用DockerHub上准备的图片,不会有它们的源Dockerfile。我花时间找到了一个工具,可以合并(或展平)两个不同的Docker图像,而不需要它们的Docker文件。也就是说,寻找可以做到以下几点的东西:

图1 -

- gtmerged_image_12

/

图2 -

之前在GitHub上有两个相关的讨论(1和2),虽然都是关闭的。

这可能吗?

那么,有没有一个工具可以做到这一点:docker merge image 2 image2 merged _ image?

不要!

你可以 甚至不能用下面的方法构建Dockerfile:

来自图像1

来自图像2

简而言之,一个Dockerfile文件中不能有多个基本映像。

但是我需要这个功能!

唯一的解决方案是获取这些图像的docker文件,然后将它们组织成一个文件并构建它们。那么,我能在DockerHub上得到一个镜像Dockerfile吗?幸运的是,你可以。它可以 不可离线获取(原文在线,但显然在线时可以直接从GitHub获取),但可以使用dockerhistory命令通过逆向工程获取。

怎么用?

在你的机器上使用dockerpull从Docke下载。RHub下载图像。

dockerpullimage1

dockerpullimage2

然后使用dockerhistory获取构建两个容器时运行的命令。

docker history-no-trunctrueimaggtimage 1-docker file

docker history-no-trunctruegimage 2g timage 2-docker file

接下来,打开这两个文件,您可以看到每个图像的命令堆栈。这是因为Docker图像是由层构建的(阅读更多)。也就是说,您在Dockerfile中键入的每个命令都会构建一个新的映像,该映像位于前一个命令生成的映像之上。所以你可以对镜像进行逆向工程。

限制

唯一的情况是你可以 对映像进行反向工程是指映像的维护者在docker文件中使用ADD或COPY命令。您将看到这样一行:

addfil: 1 AC 56373 f 7983 caf 22

或者add dir : cf 6 F

如何将本地docker镜像上传到我的私有仓库?

Docker越来越受欢迎了。如果你的团队准备开始使用docker,那么私有仓库是必不可少的。第一,它可以帮助你加快从服务器拉映像的速度,第二,它可以帮助你。你不 我不想把图像放在公共Docker注册表上...在启动服务器之前,让 s上传Ubuntu云ima。

图像 Docker 文件 命令 docker

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。