Windows2016 TP5中Docker容器新功能介绍

太快了—再也不用sleep

在TP5中用Windows Dockerfile创建Docker镜像,比之前在TP4中多了,另外以前每个run命令中都要sleep几秒,现在sleep完全没必要,赶紧删了吧。

IP地址可查

之前TP4中的一个移植障碍(Docker Birthday app to TP4 Windows containers)是不能获取每个容器的IP地址。现在只要运行docker inspect便可以显示容器IP了。

02.png

之后我会测试docker-compose.yml文件中的链接,看是否能用简单的host名建立一个简单的多容器应用。

不过这已经是Windows容器网络的一次提升了。

npipe就是你的unix socket

还有一个有意思的事儿,Docker引擎现在可以监听一个Windows命名的管道(pipe),就像Linux上的Unix socket。

这就导致你运行Docker命令的行为非常Unix化,你必须要“sudo”一下:
在没有管理员权限时尝试运行Docker客户端,你根本就连不上。

03.png

有一个办法可以允许指定用户使用这个命名管道,类似在Linux上把用户添加到docker group,不过我在这次小测试中还没找到这个group的名字。

Kitematic 和 Windows兼容(Kitematic meets Windows (again))

当晚我还在并行虚拟机中玩了一把Windows测试版的Docker,虚拟机中同时安装了Kitematic。因为测试版不是通过VirtualBox使用Kitematic的,我认为在TP5上应该也能用。所以我移除了Beta download的压缩文件,稍微调整了我的TP5设置,使得Kitematic和Window Docker Engine之间可以通信。

我采取的方法相当实用,把本地TCP端口2375添加到Docker Engine:

notepad C:\ProgramData\docker\runDockerDaemon.cmd  

再把dockerd命令改成:

dockerd -H npipe:// -H 127.0.0.1:2375

然后运行:

restart-service docker  

下载的测试版kitematic也会搜索docker.local,所以我在主机表中加了回环IP地址:

notepad C:\Windows\system32\drivers\etc\hosts  

 

04.png

现在Kitematic启动时不再创建新的本地的虚拟机,也不会在左侧的窗口显示本地Windows容器了。启动时不再创建新的本地的虚拟机,也不会在左侧的窗口显示本地Windows容器了。

TP5还有很多东西要去探索,现在你能可以在Docker Hub上pull/push Docker镜像。

Docker移植到Windows

容器运行和内核依赖

人们普遍认为Docker广泛使用Linux内核。同样,微软已经将集装箱化基本体添加到Windows内核,允许任何用户代码执行过程在沙箱环境中。这些功能只有在刚刚发布的Windows Server 2016 Tech Preview 3 (TP3)上获得,这使得它成为目前唯一的Windows能够运行Docker daemon的Windows Server操作系统。

在Docker的代码库中,容器的执行块称为execdriver,作为一个在Linux上的默认实现调用tolibcontainer——在不久的将来将依靠runC。对于Windows容器,微软Windows团队将其融入Windows specific execdriver。就像它的Linux副本,这个实现快速调用内核代码,以及通过 microsoft/hccshim包调用Host Compute Service。

分享到:更多 ()