38

I was reading a nice question about docker - answer has overview of docker implementation details. I was wondering if anything like this is possible to do on Windows platform.

  • Do Windows alternatives for Docker exist?
  • Is it theoretically possible to use other (Windows based) components to build it?

Update1:

Update2::

For info how to install docker on windows (unrelated) - official docs has great instructions how to set up the environment by using boot2docker VM.

4

9 回答 9

23

您可以在虚拟机中运行 docker。


新更新

Vagrant 现在已经集成了 docker 支持。它可以用作提供者或供应者。这里有一些有用的链接。

功能预览:基于 Docker 的开发环境

Vagrant 文档:Docker 供应商

Vagrant Docs:Docker 提供者


旧更新

正如 seanf 在下面的评论中指出的那样,放弃了对 Vagrant 的支持。相反,他们指向boot2docker

boot2docker 是一个基于 Tiny Core Linux 的轻量级 Linux 发行版,专门用于运行 Docker 容器。它完全从 RAM 运行,重约 24MB,启动时间约 5 秒(YMMV)。

旧答案

官方 docker 文档包含一个在 Vagrant box 中安装 docker 的小指南。Vagrant是一个很棒的虚拟机管理包装器。该指南适用于 Mac/Linux,但您可以在 Windows 中执行相同操作:

http://docs.docker.io/en/latest/installation/vagrant/

通过这种方式,您可以在具有不同操作系统的多个系统之间共享 docker 映像。

于 2013-10-18T11:43:09.923 回答
8

如果您只是在寻找一种在某种 Windows 容器中部署一组预打包应用程序的方法,其中注册表和文件访问被虚拟化,但不使用完整的虚拟机映像,这些(商业)沙箱 -类似的应用程序可能值得一看:

编辑:有一个新的孩子,Spoon 支持 Windows 容器,它实际上看起来很有前途。

于 2013-11-27T11:24:36.760 回答
6

我发现至少与文件系统相关的功能已经安装了 Windows (7,8)。可以使用 VHD 文件(虚拟磁盘)来处理 Docker 中的“图像”概念。这些映像用于虚拟机,但也可以由 Windows 直接创建/附加/使用:

diskpart
DISKPART> create vdisk file=c:\base-image.vhd maximum=200 type=expandable

新图像可以叠加在基础图像之上:

DISKPART> create vdisk file=c:\image-2.vhd parent=c:\base-image.vhd

请参阅有关管理虚拟磁盘的更多信息。

不幸的是,进程轻量级隔离/沙盒可能是不可能的(至少不简单),尽管确实存在一些方法(http://www.sandboxie.com/,Google Chrome 中的 Native Client ...)

于 2013-09-23T09:14:45.473 回答
3

微软正在开发他们自己的类似于 Docker的Hyper-V 容器——Azure 也支持 Docker 基础架构。

除此之外,很难给出精确的替代方案,但在 Windows 方面,我们已经拥有 App-V 很长一段时间了,它可以虚拟化和沙盒应用程序,因此它们可以在没有实际安装在特定系统上的情况下运行或流式传输。我从未干预过它,但它似乎能够作为独立客户端运行,而无需任何微软通常涉及的复杂服务器基础架构。

从另一个角度来看,Windows (VHD) 使用的磁盘映像格式支持标准差异,因此您可以轻松地从单个只读操作系统映像运行多个虚拟机,其中每个虚拟机都有一个很小的写入映像来处理差异。不过,这些仍然是成熟的虚拟机。

于 2013-11-28T12:31:36.910 回答
2

我目前不知道有什么方法可以在本机 Windows 上做同样的事情。

我不认为 Windows 内核是为这类事情而构建的,因此为了支持它,Microsoft 必须将这些功能添加到 Windows 内核中。如果我错了,请有人纠正我。

人们做这种事情的最常见方法是在运行基于 Linux 的操作系统的 Windows 中使用 VM,并在其中运行所有内容。您也可以使用 FreeBSD (Jails) 和 Solaris (zones) 来做同样的事情,如果这更适合您的话。但 Docker 目前不支持 FreeBSD 或 Solaris,因此您需要使用这些本地工具。

于 2013-09-17T16:23:26.293 回答
2

从 2016 年 6 月开始,Docker 可以在 Windows 10 主机上的微软 Hyper-V 虚拟化上运行。这是现在在 Windows 上运行 Docker 的首选和“官方”方式。

https://docs.docker.com/engine/installation/windows/

Hyper-V 是一个Type-1-Hypervisor,这意味着 docker 将运行更接近主机硬件的一层,并且比 boot2docker(它使用 VirtualBox,一个 Type-2-Hypervisor,在主机操作系统内运行)执行得更快。

docker 的性能优势也有一个缺点:启用 Hyper-V 将阻止 Type-2-Hypervisor 的硬件虚拟化功能,因此现有的 VirtualBox 映像不能与 VTx 一起使用,您可能需要考虑将其他虚拟化操作系统移至 Hyper- V 也一样。

Windows 7-8.1 主机仍然可以使用 boot2docker 来运行 Docker 容器,但 Windows 上 Docker 的主要开发重点是“新”Hyper-V-Docker。

于 2016-08-26T14:08:31.987 回答
1

Hyper-V 仅适用于 Windows Pro。安装它只需 110 英镑。

或者简单地安装 Vagrant,安装 VirtualBox,安装 GIT bash,然后从您的 GIT bash 终端安装。

git clone git@github.com:danday74/vagrant-docker-skelly.git
cd vagrant-docker-skelly
vagrant up # takes approx 5 mins to create VM
vagrant ssh
docker -v
docker-compose -v

Vagrantfile 显示:

1 - 这是一个安装了 docker 和 compose 的 Xenial VM

2 - 从主机映射到虚拟机的端口是 9900-9920

3 - 共享文件夹从主机共享到虚拟机

根据需要进行调整。

于 2017-03-02T06:59:27.343 回答
0

我厌倦了使用 maven docker 插件,所以我想我可以伪造它。这是如何:

使用 boot2docker 和下面的 bat 文件可以让你看起来像是在本地运行 docker。把它放在你的路径上。

@set SSH="C:\Program Files (x86)\Git\bin\ssh.exe"
@set RUN_REMOTE='docker %*'
@ %SSH% -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -p 2022 -i %HOMEPATH%/.ssh/id_boot2docker -tt docker@localhost %RUN_REMOTE%

ssh.exe 来自与 boot2docker 捆绑的 msys-git 包。我很确定这个解决方案有很多注意事项,但对我来说效果很好。将此文件放在您的路径和鲍勃的叔叔上。

于 2015-04-11T14:51:02.050 回答