如何使用 docker desktop restart 命令重启 Docker Desktop

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何重启 Docker Desktop,这是管理 Docker 环境的基础操作。我们将探讨重启 Docker Desktop 的目的,这相当于在 Linux 环境(如本 LabEx 虚拟机提供的环境)中重启 Docker 守护进程服务。

你将执行基础的重启命令,学习如何在 detached 模式(后台模式)下重启 Docker Desktop,并了解如何为重启过程设置超时时间。通过这个动手实践,你将掌握在必要时通过重启守护进程来有效管理和排查 Docker 环境的知识。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ps -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} docker/start -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} docker/stop -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} docker/restart -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} docker/info -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} docker/system -.-> lab-555147{{"如何使用 docker desktop restart 命令重启 Docker Desktop"}} end

理解 Docker Desktop 重启的目的

在这一步骤中,我们将了解重启 Docker Desktop 的目的。虽然 LabEx 环境提供了一个预装 Docker 的 Linux 虚拟机,但重启 Docker 守护进程的概念是管理 Docker 环境的基础知识,这同样适用于其他操作系统上的 Docker Desktop。

Docker 守护进程是管理 Docker 对象(如镜像、容器、网络和卷)的后台服务。有时你可能需要重启 Docker 守护进程,原因包括:

  • 应用配置变更:某些 Docker 守护进程的配置更改需要重启才能生效
  • 故障排查:重启守护进程可以解决各种问题,例如容器无法启动、网络问题或性能问题
  • 释放资源:在某些情况下,重启守护进程可以帮助释放可能被 Docker 进程占用的系统资源

在 LabEx 虚拟机这样的 Linux 环境中,你通过 docker 命令行界面直接与 Docker 守护进程交互。在其他操作系统上重启 Docker Desktop 的等效操作,就是在 Linux 上重启 Docker 守护进程服务。

要检查 LabEx 虚拟机中 Docker 服务的状态,你可以使用 systemctl 命令:

systemctl status docker

你应该能看到表明 Docker 服务处于活动运行状态的输出:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: https://docs.docker.com
   Main PID: ... (dockerd)
      Tasks: ...
     Memory: ...
        CPU: ...
     CGroup: /system.slice/docker.service
             └─... /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

这个输出确认了 Docker 守护进程正在作为系统服务运行。虽然为了避免干扰环境,我们不会在这一具体步骤中重启服务,但了解其状态是管理它的第一步。

执行基础的 Docker Desktop 重启命令

在这一步骤中,我们将学习如何在 Linux 环境中重启 Docker 守护进程,这相当于重启 Docker Desktop。如前一步骤所述,Docker 守护进程是一个系统服务。要在 Linux 上重启系统服务,我们使用 systemctl 命令。

重启 Docker 服务的基础命令是 sudo systemctl restart docker。使用 sudo 命令是因为重启系统服务通常需要管理员权限。systemctl restart 命令会先停止正在运行的服务,然后重新启动它。

在重启之前,我们先运行一个简单的 Docker 命令来确认守护进程是否响应。可以使用 docker ps 列出当前运行的容器。由于我们尚未启动任何容器,输出应该是空的或仅显示列标题。

docker ps

现在,让我们重启 Docker 服务。执行以下命令:

sudo systemctl restart docker

这条命令会先停止然后重新启动 Docker 守护进程。除非出现错误,否则你不会看到太多输出。

重启完成后,我们再次检查 Docker 服务的状态以确认它正在运行:

systemctl status docker

你应该能看到与之前步骤类似的输出,表明服务处于活动运行状态,但"Active"行会显示最近的时间戳,表示它已被重启。

最后,我们再次运行 docker ps 来确认重启后 Docker 守护进程是否响应:

docker ps

输出应该再次显示容器标题,确认 Docker 守护进程正常运行。

重启 Docker 守护进程是常见的故障排查步骤,在进行某些配置更改后也是必要的操作。

以分离模式重启 Docker Desktop

在本步骤中,我们将探讨"分离模式"运行进程的概念及其与 Docker 守护进程管理的关系。虽然"分离模式"这一术语更常用于描述在后台运行 Docker 容器,但其不占用终端运行进程的基本原理同样适用于 Docker 守护进程这类系统服务。

当你以前台方式运行命令时,终端会被占用直到命令执行完成。相比之下,以后台或"分离"模式运行进程可以让你继续使用终端执行其他任务。像 Docker 守护进程这样的系统服务被设计为在系统启动时自动在后台运行。

systemctl 的上下文中,restart 命令默认以不占用终端的方式运行。它会启动停止和重启进程,并在命令执行后立即将控制权返回给终端,即使服务仍在完全启动的过程中也是如此。这与容器的分离模式概念类似。

为了演示这一点,让我们再次使用相同的命令重启 Docker 服务:

sudo systemctl restart docker

注意执行命令后,终端提示符会立即返回。systemctl restart 命令本身不会等待 Docker 守护进程完全就绪才返回。现在守护进程正在后台重启。

你可以通过检查服务状态来验证它正在重启并最终在后台运行:

systemctl status docker

你将看到状态从 stopping 变为 starting,最终变为 active (running)。这些状态变化在你发起重启命令后独立于终端会话发生。

systemctl restart 的这种行为类似于使用 -d--detach 标志运行 Docker 容器,容器会在后台启动且不会阻塞你的终端。

带超时的 Docker Desktop 重启操作

在本步骤中,我们将学习如何设置超时来重启 Docker 守护进程。虽然 systemctl restart 命令本身不像某些 Docker 命令(如 docker stop --time)那样内置超时参数,但超时概念在服务管理中非常重要。

systemctl 的上下文中,重启过程中发生的停止和启动操作在服务单元文件中定义了各自的内部超时。如果服务无法在这些定义好的超时时间内完成停止或启动,systemd(系统和服务管理器)通常会报告错误。

例如,当执行 systemctl restart 时,如果 Docker 守护进程繁忙且关闭耗时过长,systemd 最终可能会终止该进程并报告失败。同样,如果守护进程未能在配置的超时时间内启动,启动操作也会失败。

虽然我们无法直接在 systemctl restart 命令上为整个重启过程指定超时,但可以通过观察重启期间服务状态的行为来模拟可能出现超时的场景。

让我们再次启动 Docker 服务的重启:

sudo systemctl restart docker

执行命令后立即检查状态,你可能会短暂看到服务处于"stopping"或"activating"状态,然后才恢复为"active (running)"。

systemctl status docker

服务在这些状态间转换所需的时间受 Docker 服务单元配置的内部超时影响。如果服务在停止或启动过程中挂起,systemd 将会强制执行这些超时。

例如,如果停止操作超时,你可能会在 systemctl status docker 输出或系统日志(journalctl -u docker)中看到错误信息。

虽然我们没有直接设置整个 systemctl restart 操作超时的命令行选项,但理解底层停止和启动过程受超时限制这一点对于排查服务管理问题至关重要。如果重启持续失败,检查服务日志中的超时错误是个好的切入点。

总结

在本实验中,我们学习了重启 Docker Desktop 的目的,这相当于在 Linux 环境中重启 Docker 守护进程服务。我们了解到重启操作对于应用配置更改、故障排查以及释放资源都是必要的。同时,我们还学会了在 Linux 虚拟机中使用 systemctl status docker 命令来检查 Docker 服务的状态。

随后我们执行了基本的 docker desktop restart 命令(尽管实验环境使用的是 Linux 虚拟机,我们直接与 Docker 守护进程交互)。此外,我们还探索了以分离模式和指定超时时间重启 Docker Desktop,理解了这些选项对于有效管理 Docker 环境的实际意义。