问题描述
在使用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容器隔离模式(如hyperv
或process
)。
对于Linux容器模式,您可能需要启动com.docker.service
,这主要与管理VMs(如MobyLinuxVM)有关。如果您不需要切换到Linux容器模式,那么在Windows容器模式下,只运行dockerd
进程即可。
进一步调查
如果您发现在特定情况下还需要com.docker.service
运行,请进一步调查以确定它的确切用途。您可以尝试在Windows服务管理器中停止Docker服务(com.docker.service),然后执行Docker命令,观察是否能够正常运行。这有助于进一步理解Docker服务在不同情况下的影响。
这就是在Docker for Windows中dockerd
和com.docker.service
的主要区别和使用方式。在Windows容器模式下,您可以通过运行dockerd
进程来执行Docker命令,而只有在切换到Linux容器模式时才需要启动com.docker.service
。这样,您可以根据您的需要有效地管理Docker容器并进行必要的操作。