如何将虚拟机镜像转换为Dockerfile?

14

为了工作目的,我有一个ova文件需要将其转换为DockerFile。

有人知道如何做吗?

谢谢提前。


1
你将需要打包整个文件系统,并使用 FROM scratchCMD /sbin/init 在 Dockerfile 中创建一个 Docker 镜像。这可能有效,但我猜你更有可能失败。Docker 不是用于那种方式的。祝你好运! - Robin479
希望以下链接对你有所帮助:https://dev59.com/110Z5IYBdhLWcg3wiw7n - Sandy
偶然发现了类似的练习 - undefined
4个回答

4
有几种不同的方法可以做到这一点。它们都涉及获取虚拟机的磁盘映像。其中一种方法是挂载VDI,然后从中创建Docker镜像(请参阅其他Stackoverflow答案)。另一种方法是启动虚拟机并将完整的磁盘内容,从根目录开始,复制到共享文件夹。我们已经成功尝试了多种方法。只要虚拟机中的磁盘与运行容器的内核兼容,创建拥有完整虚拟机磁盘的Docker镜像就可以工作。

0

步骤1

以root身份安装ShutIt:

sudo su -
(apt-get update && apt-get install -y python-pip git docker) || (yum update && yum install -y python-pip git docker which)
pip install shutit

先决条件是python-pip、git和docker。这些在您的软件包管理器中的确切名称可能会略有不同(例如docker-io或docker.io),具体取决于您的发行版。

您可能还需要确保docker服务器正在运行,例如使用'systemctl start docker'或'service docker start'。

步骤2

检出copyserver脚本:

git clone https://github.com/ianmiell/shutit_copyserver.git

步骤三

运行copy_server脚本:

cd shutit_copyserver/bin
./copy_server.sh

有几个提示 - 一个是纠正配置文件权限的,另一个是询问您想使用哪个Docker基础镜像。确保您使用尽可能接近原始服务器的镜像。

请注意,这需要一个具有“docker exec”选项的Docker版本。

步骤4

运行构建服务器:

docker run -ti copyserver /bin/bash

您现在位于 Docker 容器中的实际服务器仿真环境!

来源

https://zwischenzugs.com/2015/05/24/convert-any-server-to-a-docker-container/


0

是的,可以使用虚拟机镜像并在容器中运行。许多我们的客户已经成功地使用了这个项目:https://github.com/rancher/vm.git

RancherVM允许您创建在Kubernetes pod内运行的VM,称为VM Pod。 VM Pod看起来和感觉像一个常规的pod。然而,在每个VM pod内部,有一个运行虚拟机实例的容器。您可以将任何QEMU / KVM映像打包为Docker映像,使用任何Docker注册表(例如DockerHub)分发它,并在RancherVM上运行它。

最近,该项目也与kubernetes兼容。更多信息请参见:https://rancher.com/blog/2018/2018-04-27-ranchervm-now-available-on-kubernetes


-7

在我看来,这是完全不可能的。但是你可以创建一个具有相同操作系统的Dockerfile,并挂载你的数据。


我知道我可以创建一个Docker文件,但是在虚拟机上有很多配置我不太了解。 :/ - AznYouth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接