https://blog.csdn.net/m2l0zgssvc7r69efdtj/article/details/79251059

就在上周,Docker官方的master分支上新增了LCOW(Linux Containers on Windows)[1]功能。启用这项功能,即可在单一的Docker引擎下,同时运行Linux和Windows容器。
下面赶紧跟小编一起,看看Windows 10将会发生哪些变化?

  • 可以用Docker命令docker ps,列出所有正在运行的Linux或Windows容器。

  • 在容器和主机之间通过存储卷共享数据。

  • 容器之间可以通过容器网络互相通信。

  • 通过将端口映射到主机,实现本地访问。但目前,它还只是Windows 10 1803版预览体验计划(Windows Insider)的一项功能。

运行Linux容器

现在,你需要指定--platform来拉取Linux镜像。如果拉取的是一个既有Linux又有Windows的多重架构的镜像,同样需要指定该选项。

docker pull --platform linux alpine

镜像拉取完毕即可运行,无需指定--platform选项。

docker run alpine uname -a

另外,Windows上运行Linux容器需要一台小型的Hyper-V虚拟机。同时,LinuxKit项目提供了LCOW的镜像,请参照:https://github.com/linuxkit/lcow。

共享存储

接下来我们看一下,如何用一种简单的方式,实现不同平台容器间的数据共享。
方法是把Linux和Windows容器,绑定到同一个存储卷。
下面的例子中,Linux和Windows容器通过主机的一个共享文件夹,实现数据共享。

首先,在Windows 10 上新建一个文件夹。

cd \
mkdir host

启动Linux容器
在Windows 10主机上启动一个Linux容器,并且将主机上的共享文件夹挂载到该容器的/test文件夹。

docker run -it -v C:\host:\test alpine sh

我们在/test文件夹下,新建一个名为hello-from-linux.txt的文件。

uname -a > test/hello-from-linux.txt

启动Windows容器
在Windows 10主机上启动一个Windows容器,并且将主机上的共享文件夹挂载到该容器的C:\test文件夹。

docker run -i -v C:\host:C:\test microsoft/nanoserver:1709 cmd

我们在C:\test文件夹下,新建一个名为hello-from-windows.txt的文件。

ver > test\hello-from-windows.txt

测试结果
上述两个容器中新建的文件,都保存在Windows 10 主机的共享文件夹。

PS C:\> dir host
   Directory: C:\host
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        1/21/2018   4:32 AM             85 hello-from-linux.txt
-a----        1/21/2018   4:33 AM             46 hello-from-windows.txt

在开发过程中,如果需要共享配置文件或代码的话,这实在是太方便了有木有~

混合编排

值得一提的是,使用Docker Compose还可混合编排容器。下面是一个混合编排Linux和Window web服务器的例子。

    version: "3.2"
   services:
     web1:
       image: nginx
       volumes:
         - type: bind
           source: C:\host
           target: /test
       ports:
         - 80:80
     web2:
       image: stefanscherer/hello-dresden:0.0.3-windows-1709
       volumes:
         - type: bind
           source: C:\host
           target: C:\test
       ports:
         - 81:3000
   networks:
     default:
       external:
         name: nat

你也可以思考一下,如何编排一个Linux数据库和Windows前端,反过来也一样。

如何搭建你的LCOW测试环境

如果你想试着玩一下LCOW,建议使用Windows 10 1709虚拟机。
Azure
我在微软Azure上用Windows 10 1709虚拟机测试过LCOW。你可以选择具有嵌套式hypervisor的V3 机器以便运行Hyper-V容器。
容器和Hyper-V
首先,启用容器和Hyper-V功能:

Enable-WindowsOptionalFeature -Online -FeatureName containers -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart

LinuxKit
然后,为你的LCOW安装一个LinuxKit镜像。下面是我下载的最新版LinuxKit,你也可以自行从linuxkit/lcow[2]下载。

Invoke-WebRequest -OutFile "$env:TEMP\linuxkit-lcow.zip" "https://23-111085629-gh.circle-artifacts.com/0/release.zip"
Expand-Archive -Path "$env:TEMP\linuxkit-lcow.zip" -DestinationPath "$env:ProgramFiles\Linux Containers" -Force

创建Docker
现在,你可以下载并安装Docker引擎了。

Invoke-WebRequest -OutFile "$env:TEMP\docker-master.zip" "https://master.dockerproject.com/windows/x86_64/docker.zip"
Expand-Archive -Path "$env:TEMP\docker-master.zip" -DestinationPath $env:ProgramFiles -Force

接下来,安装Docker service并打开实验功能。

 . $env:ProgramFiles\docker\dockerd.exe --register-service --experimental

紧接着,配置PATH以便使用Docker CLI。

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($env:ProgramFiles)\docker", [EnvironmentVariableTarget]::Machine)

恭喜你!现在可以重启机器了。重启过程中会自动更新容器和Hyper-V的配置。如果一切顺利,重启完后Docker engine应该已经起来并处于运行状态了,这时你可以在PowerShell终端使用Docker CLI。

本地的Vagrant环境

如果你的Vagrant安装了Hyper-V或VMware,那就更方便了。只需几个命令,就可轻松搭建本地测试环境。
你只需要从我的GitHub下载包含LCOW环境的docker-windows-box,执行以下命令就可以了。

git clone https://github.com/StefanScherer/docker-windows-box
cd docker-windows-box
cd lcow
vagrant up

如果你的Windows 10虚拟机上没有Vagrant base box,系统会自动下载安装。如果已经下载了,则只进行安装。

总结

未来几个月,随着这些Docker新功能加入到Windows,Windows 10无疑将成为2018年最具吸引力的开发者平台。
想象一下,你用docker-compose.yml编排Linux和Windows容器,通过Visual Studio Code实时调试你的应用程序,等等。
如果您喜欢这篇文章,请分享给您的朋友。如果想了解Windows容器的最新情况,请关注原文作者的推特@stefscherer[3]。
相关链接:

  1. https://github.com/moby/moby/pull/34859

  2. https://github.com/linuxkit/lcow/releases

  3. https://twitter.com/stefscherer

原文链接:https://stefanscherer.github.io/sneak-peek-at-lcow/

LCOW —— 单一Docker引擎下可同时运行Linux和Windows容器啦!的更多相关文章

  1. Linux下安装Wine 运行、卸载 windows程序

    资料 首页 https://www.winehq.org/ 安装 https://www.winehq.org/download/ 教程 https://www.winehq.org/document ...

  2. Ubuntu 下配置Samba 实现Linux和windows之间文件共享

    一 Samba 的安装: sudo apt-get insall sambasudo apt-get install smbfs 二 在Ubuntu中创建共享目录: mkdir  /home/shar ...

  3. 在Ubuntu14.04下配置Samba 完成linux和windows之间的文件共享

    在Windows和Linux之间传递文件可以使用Samba服务.下面是安装步骤: 1. 安装Samba. sudo apt-get install samba 2. 修改配置文件 sudo gedit ...

  4. 深入剖析Windows专业版安装Docker引擎和Windows家庭版Docker引擎安装的区别

    原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94 公司使用的电脑是Windows专业版,所以配置本机的Docker时会方便许多,后续由于需 ...

  5. 在Linux和Windows的Docker容器中运行ASP.NET Core

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...

  6. 《Docker Deep Dive》Note - Docker 引擎

    <Docker Deep Dive>Note Docker 引擎 1. 概览 graph TB A(Docker client) --- B(daemon) subgraph Docker ...

  7. Mac+Docker环境下xdebug的配置

    由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...

  8. 零基础教程!一文教你使用Rancher 2.3和Terraform运行Windows容器

    本文来自Rancher Labs 介 绍 在Kubernetes 1.14版本中已经GA了对Windows的支持.这一结果凝结了一群优秀的工程师的努力,他们来自微软.Pivotal.VMware.红帽 ...

  9. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

随机推荐

  1. JSON Support in PostgreSQL and Entity Framework

    JSON 和JSONB的区别(What's difference between JSON and JSONB data type in PosgresSQL?) When should be use ...

  2. 2017年前小纪(有关http的一些缓存理论知识)

    position的top和bottom的区别:前者基准点定在top,后者基准点定在bottom. for-in 遍历属性的顺序不确定 手机端,line-height对光标大小非常有影响 有些css3属 ...

  3. Flutter的输入框TextField

    TextFiled组件的API 先来看一下TextFiled的构造方法: const TextField({ Key key, this.controller, this.focusNode, thi ...

  4. zepto的extend

    类型判断 var class2type = {},toString = class2type.toString,$={}; //判断类型 function type(obj) { return obj ...

  5. Python自动化运维之pexpect从入门到精通

    1. 应用场景 模拟ssh, telnet远程登录, 模拟ftp文件上传 2. 安装 参考资料: <pexpect实例分析>https://www.ibm.com/developerwor ...

  6. Java8 flatMap的sample

    外国人写得, 很不错 http://www.java67.com/2016/03/how-to-use-flatmap-in-java-8-stream.html package test; impo ...

  7. linux 安装python 和pip

    下载文件 python官网:https://www.python.org/downloads/ 百度网盘http://pan.baidu.com/s/1mixGB12     密码   9nzu [r ...

  8. Python学习之路——Day06 元组

    一.元组 t1 = (1, 2) t2 = tuple((1, 2)) t3 = (1, ) # 索引 | 切片 | 长度 # .count(obj) | .index(obj, bIndex, eI ...

  9. solr单机版搭建

    需要把solr服务器安装到linux环境: 第一步:安装linux.jdk.tomcat. [root@bogon ~]# ll total 8044 -rw-r--r--. 1 root root ...

  10. codeforces496C

    Removing Columns CodeForces - 496C You are given an n × m rectangular table consisting of lower case ...