Windows 版 Docker Desktop 上的 docker.exe 和 dockercli.exe 有什么区别?

mat*_*i82 6 docker

我正在学习 Docker,并且我已经安装了适用于 Windows 的 Docker。我对两个命令行程序感到困惑,一个是 docker.exe (完整路径:C:\Program Files\Docker\Docker\Resources\bin\docker.exe),另一个是 DockerCli.exe (完整路径:c:\程序文件\Docker\Docker\DockerCli.exe)

为什么 Docker 有两个命令行界面?此外,我可以调用多个“版本”命令。当我运行时,docker version我得到以下输出:

c:\Program Files\Docker\Docker>docker version
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:31 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false
Run Code Online (Sandbox Code Playgroud)

这与我跑步时不同docker -v

c:\Program Files\Docker\Docker>docker -v
Docker version 18.09.2, build 6247962
Run Code Online (Sandbox Code Playgroud)

最后,当我运行时,dockercli -Version我得到:

c:\Program Files\Docker\Docker>DockerCli.exe -Version

Docker Desktop
Version: 2.0.0.3 (31259)
Channel: stable
Sha1: 8858db33c8692b69de9987a5d672798d778735b2
OS Name: Windows 10 Pro
Windows Edition: Professional
Windows Build Number: 16299
Run Code Online (Sandbox Code Playgroud)

为什么有多个“版本”命令,并且都有不同的输出?

atl*_*ine 0

见下图:

在此输入图像描述

Docker项目有上游项目,也有下游产品。任何人或公司都可以基于核心部件开发自己的产品。

因此微软与docker公司一起在Windows 10上开发了他们的下游产品docker for windows,称为docker ce核心部分。

那么,简而言之:

docker.exe:提供给用户与docker引擎通信的docker客户端。您可以使用它来执行docker pull, docker run其他 docker 操作。

dockercli.exe:docker for windows 提供的工具,供用户与 docker for windows 进行通信。您可以使用它来切换到linux-container-mode/windows-container-mode等。

额外的:

docker -vDocker CE显示 的版本的核心部分,同时dockercli.exe -Version显示docker for windows的版本。