Docker.io for Windows

我正在阅读关于docker的一个很好的问题 – 答案有docker的实现细节的概述。 我想知道是否有这样的事情可以在Windows平台上做。

  • Docker的替代品是否存在?
  • 理论上可以使用其他(基于Windows)组件来构build它吗?

更新1

  • 稍微相关的问题(沙盒): Windows平台是否有一个轻量级的可编程Sandbox API?

Update2 ::

有关如何在Windows上安装docker(无关)的信息 – 官方文档对如何使用boot2docker虚拟机设置环境有很好的说明。

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


新的更新

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

function预览:基于Docker的开发环境

stream浪狗文档:Docker Provisioner

stream浪狗文档:Docker Provider


旧更新

正如seanf在下面的评论中指出的,stream浪者的支持被放弃了。 相反,他们指向boot2docker :

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

老答案

官方的docker文档包含一个小指南,用于将docker安装在Vagrant框中。 stream浪是一个伟大的虚拟机pipe理包装。 该指南适用于Mac / Linux,但您可以在Windows中执行相同的操作:

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

通过这种方式,您可以在不同操作系统的多个系统上共享docker图像。

如果您只是在寻找一种方法在Windows的某种容器中部署预打包的应用程序集,并且虚拟化registry和文件访问权限,但不使用全面的虚拟机映像,则这些(商业)沙盒 – 像应用程序可能值得一看:

  • 赛门铁克工作区虚拟化 (从这里获得一些准备使用的软件包)
  • Evalaze
  • Cameyo
  • BoxedApp

编辑:在块上有一个新的孩子, 勺子支持Windows的容器 ,它实际上看起来非常有前途。

我发现至less文件系统相关的function已经在Windows(7,8)已经到位。 可以使用VHD文件(虚拟磁盘)来处理Docker中的“图像”概念。 这些图像用于虚拟机,但也可以由Windows直接创build/附加/使用:

 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 

查看更多关于pipe理虚拟磁盘的信息 。

不幸的是,尽pipe存在一些方法( http://www.sandboxie.com/ ,谷歌浏览器中的Native Client …),但是处理轻量级的隔离/沙盒可能是不可能的(至less不是简单的)

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

除此之外,很难提供确切的select,但在Windows上,我们已经使用了App-V很长一段时间,虚拟化和沙盒应用程序可以在没有安装到特定系统的情况下运行或stream式传输。 我从来没有用过它,但它似乎能够作为独立的客户端运行,而不需要通常涉及任何Microsoft的复杂服务器基础结构。

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

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

我不认为windows内核是为这样的事情而构build的,所以为了支持它,微软将不得不将这些function添加到Windows内核中。 如果我错了,有人请纠正我。

人们最常见的做法就是在运行基于Linux的操作系统的窗口中使用虚拟机,并在其中运行一切。 你也可以使用FreeBSD(Jails)和Solaris(区域)来做同样的事情,如果这更像是一杯茶。 但是Docker目前不支持FreeBSD或者Solaris,所以你需要使用这些工具。

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

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

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

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

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

Hyper-V仅在Windows Pro上。 安装£110。

或者简单地安装Vagrant,安装VirtualBox,安装GIT bash,然后从你的GIT bashterminal。

 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 – 这是一个Xenial虚拟机,其上安装了docker和compose

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

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

根据需要调整。

我厌倦了一个mavendocker插件的战斗,所以我想我会能够伪造它。 这是如何:

使用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软件包。 我很确定这个解决scheme有一些注意事项,但是对我来说这个工作非常好。 把这个文件放在你的path上,你的叔叔。