如何使用 docker desktop enable model-runner 命令管理 Model Runner 设置

DockerBeginner
立即练习

介绍

在本实验中,你将学习如何在 Docker Desktop 中使用 model-runner 命令管理 Docker Model Runner 设置。我们将涵盖以下内容:启用 Docker 守护进程监听默认 TCP 端口、配置其监听自定义 TCP 端口,以及最终禁用 Docker Model Runner 的 TCP 连接。

通过动手实践,你将修改 Docker 守护进程配置文件 (daemon.json) 来控制守护进程监听的网络接口,重启 Docker 服务以应用更改,并理解启用或禁用 TCP 连接对远程访问和安全性的影响。

使用默认 TCP 端口启用 Docker Model Runner

在本步骤中,我们将学习如何配置 Docker 守护进程监听默认 TCP 端口。默认情况下,Docker 守护进程通过 Unix 套接字进行通信,这种方式对本地访问更安全。但在需要远程访问或特定使用场景时,启用 TCP 连接是必要的。

要启用 Docker 守护进程监听 TCP 端口,我们需要修改其配置文件。Docker 的主配置文件通常位于 /etc/docker/daemon.json。如果该文件不存在,你可以新建它。

首先,我们检查 daemon.json 文件是否存在。可以使用 ls 命令进行检查:

ls /etc/docker/daemon.json

如果文件存在,命令会输出其路径。如果不存在,你将看到提示文件或目录不存在的错误信息。

接下来,我们将使用 nano 编辑器编辑或创建 /etc/docker/daemon.json 文件。我们需要添加或修改 hosts 键值来包含 TCP 地址和端口。Docker 的默认 TCP 端口是 2375(未加密)或 2376(TLS 加密)。为简化操作,本步骤将使用未加密的 2375 端口。

使用 nano 打开文件:

sudo nano /etc/docker/daemon.json

如果文件为空或不存在,添加以下内容。如果文件已有内容,则添加或修改 hosts 键值来包含 "tcp://0.0.0.0:2375"unix:///var/run/docker.sock 条目确保守护进程仍会监听默认的 Unix 套接字。

{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

添加或修改内容后,按 Ctrl + X 保存文件,然后按 Y 确认,最后按 Enter 写入文件名。

要使更改生效,需要重启 Docker 服务。我们可以使用 systemctl 命令来完成:

sudo systemctl restart docker

重启 Docker 服务后,你可以使用 ss 命令检查监听端口,验证是否成功监听 TCP 端口。我们将查找监听 2375 端口的进程:

sudo ss -tuln | grep 2375

如果 Docker 守护进程成功监听了 2375 端口,你应该会看到类似以下的输出,表明有进程正在监听该端口:

tcp   LISTEN 0      4096   0.0.0.0:2375      0.0.0.0:*

这确认了 Docker 守护进程现在可以通过 TCP 端口 2375 进行访问。

使用自定义 TCP 端口启用 Docker Model Runner

在上一步中,我们启用了 Docker 守护进程监听默认 TCP 端口 2375。本步骤将学习如何配置 Docker 守护进程监听自定义 TCP 端口而非默认端口。这种配置有助于提升安全性或避免端口冲突。

我们将再次修改 /etc/docker/daemon.json 文件,将 TCP 端口从 2375 更改为自定义端口(例如 2376)。

使用 nano 编辑器打开 daemon.json 文件:

sudo nano /etc/docker/daemon.json

修改 hosts 键值,将 TCP 端口从 2375 改为 2376。文件内容应如下所示:

{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"]
}

Ctrl + X 保存文件,然后按 Y 确认,最后按 Enter 写入文件名。

修改配置后,需要重启 Docker 服务使更改生效:

sudo systemctl restart docker

现在验证 Docker 守护进程是否已在新端口 2376 上监听,且不再监听默认端口 2375。我们可以再次使用 ss 命令。

首先检查 2376 端口:

sudo ss -tuln | grep 2376

你应该会看到类似输出,表明进程正在监听 2376 端口:

tcp   LISTEN 0      4096   0.0.0.0:2376      0.0.0.0:*

接着确认是否已停止监听 2375 端口:

sudo ss -tuln | grep 2375

该命令不应产生任何输出,表明 Docker 守护进程已不再监听 2375 端口。

这证明我们已成功配置 Docker 守护进程监听自定义 TCP 端口。

禁用 Docker Model Runner 的 TCP 连接

在前面的步骤中,我们先后启用了 Docker 守护进程监听默认和自定义 TCP 端口。虽然启用 TCP 连接有助于远程访问,但在不需要时禁用它并仅使用默认 Unix 套接字进行本地通信通常是更安全的选择。

本步骤将学习如何通过移除配置文件中的 TCP 主机条目来禁用 Docker 守护进程的 TCP 连接。

我们将再次使用 nano 编辑器修改 /etc/docker/daemon.json 文件。

打开 daemon.json 文件:

sudo nano /etc/docker/daemon.json

修改 hosts 键值,移除 TCP 条目(根据前一步骤可能是 "tcp://0.0.0.0:2376""tcp://0.0.0.0:2375")。文件内容现在应仅包含 Unix 套接字条目:

{
  "hosts": ["unix:///var/run/docker.sock"]
}

Ctrl + X 保存文件,然后按 Y 确认,最后按 Enter 写入文件名。

修改配置后,需要重启 Docker 服务使更改生效:

sudo systemctl restart docker

现在验证 Docker 守护进程是否已停止监听所有 TCP 端口。我们可以使用 ss 命令检查 2375 和 2376 端口。

检查 2375 端口:

sudo ss -tuln | grep 2375

该命令不应产生任何输出。

检查 2376 端口:

sudo ss -tuln | grep 2376

该命令同样不应产生任何输出。

这证明我们已成功禁用 Docker 守护进程的 TCP 连接。守护进程现在仅能通过默认 Unix 套接字访问,这是本地访问更安全的默认配置。

总结

在本实验中,我们学习了如何通过启用和禁用 Docker 守护进程的 TCP 连接来管理 Docker Model Runner 的设置。我们首先通过修改 /etc/docker/daemon.json 配置文件,在 hosts 数组中添加 "tcp://0.0.0.0:2375" 并重启 Docker 服务,使 Docker 守护进程监听默认 TCP 端口 2375。

本实验还涵盖了如何使用自定义 TCP 端口启用 Docker 守护进程,以及如何通过从 daemon.json 文件的 hosts 数组中移除 TCP 条目并重启 Docker 服务来完全禁用 TCP 连接。这些步骤展示了如何根据不同使用场景配置 Docker 的网络可访问性。