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

时间:2021-10-20 02:45:09

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

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

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


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

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

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

通过将端口映射到主机,实现本地访谒。但目前,它还只是Windows 10 1803版预览体验打算(Windows Insider)的一项成果。

  运行Linux容器

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

此刻,,你需要指定--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。   共享存储

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

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

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


首先,在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

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

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

值得一提的是,使用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测试环境