Docker for Windows中dockerd和com.docker.service的区别

50次阅读
没有评论

问题描述

在使用Docker for Windows时,对于dockerd和com.docker.service之间的区别感到困惑。他希望能够清楚地了解它们的作用,并在Windows容器模式下仅通过命令行使用Docker,并使用PowerShell脚本等方式来控制Docker。用户对于com.docker.service的角色和必要性有些不明确,希望能够解答这些疑问。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

dockerd和com.docker.service的作用

  • dockerd 是一个持久性进程,用于管理Docker容器。Docker在后台使用不同的二进制文件来处理守护进程(daemon)和客户端。Docker守护进程是一个服务器,它与操作系统交互并执行各种服务。它监听REST API请求并执行操作。
  • com.docker.service 是在运行任何Docker命令(例如docker run,docker images,docker ps等)时使用的工具。它允许我们运行人类可以轻松理解的这些命令。

根据您的描述,您可以通过在PowerShell中运行以下命令来启动dockerd并在不启动com.docker.service的情况下执行Docker命令:

Start-Process -FilePath 'C:\Program Files\Docker\Docker\resources\dockerd.exe' -Verb RunAs

Docker for Windows中的操作模式切换

根据您的描述,您只有在需要切换到Linux容器模式时才需要运行com.docker.service。在Windows容器模式下,您只需要运行dockerd进程即可执行Docker命令,拉取和运行容器,以及切换到Windows容器隔离模式(如hypervprocess)。

对于Linux容器模式,您可能需要启动com.docker.service,这主要与管理VMs(如MobyLinuxVM)有关。如果您不需要切换到Linux容器模式,那么在Windows容器模式下,只运行dockerd进程即可。

进一步调查

如果您发现在特定情况下还需要com.docker.service运行,请进一步调查以确定它的确切用途。您可以尝试在Windows服务管理器中停止Docker服务(com.docker.service),然后执行Docker命令,观察是否能够正常运行。这有助于进一步理解Docker服务在不同情况下的影响。

这就是在Docker for Windows中dockerdcom.docker.service的主要区别和使用方式。在Windows容器模式下,您可以通过运行dockerd进程来执行Docker命令,而只有在切换到Linux容器模式时才需要启动com.docker.service。这样,您可以根据您的需要有效地管理Docker容器并进行必要的操作。

正文完