云计算中什么用来保存镜像?
Registry)Docker仓库是用来存储图像的,可以理解为代码控制中的代码仓库。DockerHub提供了大量镜像供使用。
Docker仓库是用来存放图片的,可以理解为代码控制中的代码仓库。提供了大量可供使用的镜子。
Dock
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),虽然都是关闭的。
这可能吗?
那么,有没有一个工具可以做到这一点:dockermergeimage2image2merged_image?
不要!
你可以甚至不能用下面的方法构建Dockerfile:
来自图像1
来自图像2
简而言之,你可以不要在一个Dockerfile文件中有多个基本镜像。比如。
但是我需要这个功能!
唯一的解决方案是获取这些图像的docker文件,然后将它们组织成一个文件并构建它们。那么,我能在DockerHub上得到一个镜像Dockerfile吗?幸运的是,你可以。它可以不可离线获取(原文在线,但显然在线时可以直接从GitHub获取),但可以使用dockerhistory命令通过逆向工程获取。
怎么用?
使用dockerpull从您机器上的DockerHub下载图像。
dockerpullimage1
dockerpullimage2
然后使用dockerhistory获取构建两个容器时运行的命令。
dockerhistory-no-trunctrueimaggtimage1-dockerfile
dockerhistory-no-trunctruegimage2gtimage2-dockerfile
接下来,打开这两个文件,您可以看到每个图像的命令堆栈。这是因为Docker图像是由层构建的(阅读更多)。也就是说,您在Dockerfile中键入的每个命令都会构建一个新的映像,该映像位于前一个命令生成的映像之上。所以你可以对镜像进行逆向工程。
限制
唯一的情况是你可以对映像进行反向工程是指映像的维护者在docker文件中使用ADD或COPY命令。您将看到这样一行:
addfil:1AC56373f7983caf22
或者adddir:cf6Fe659e9d21535844。
这是因为我不我不知道维护人员在自己的机器上使用了什么本地文件,包括图像。