从本地集群访问本地进程

时间:2021-01-12 21:06:33

标签: macos docker kubernetes local docker-desktop

我有一个在 Mac 上的 Docker 桌面下运行的本地 Kubernetes 集群。我正在我的机器上本地运行另一个与 docker 相关的进程(本地不安全的注册表)。我有兴趣在本地集群中创建一个进程来从本地 docker 注册表中推送/拉取图像。

如何公开本地注册表,以便从本地 Kubernetes 集群内的 Pod 访问?

一种方法是让 Docker 桌面集群和 docker 注册表使用相同的 docker 网络。将注册表添加到现有网络很容易。 如何将 Docker 桌面集群添加到网络中?

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的

我认为文档 here 中提到了您要查找的内容。您必须将本地不安全注册表添加为桌面 docker 中的 insecure-registries 值。然后重启后应该就可以使用了。

部署一个普通的 HTTP 注册表

<块引用>

此过程将 Docker 配置为完全忽略注册表的安全性。这是非常不安全的,不推荐。它会将您的注册表暴露给微不足道的中间人 (MITM) 攻击。仅将此解决方案用于隔离测试或在严格控制的气密环境中使用。

编辑 daemon.json 文件,其默认位置在 Linux 上为 /etc/docker/daemon.json 或在 Windows Server 上为 C:\ProgramData\docker\config\daemon.json。如果您使用 Docker Desktop for Mac 或 Docker Desktop for Windows,请点击 Docker 图标,选择 Preferences (Mac) 或 Settings (Windows),然后选择 Docker Engine。

如果 daemon.json 文件不存在,则创建它。假设文件中没有其他设置,应该有以下内容:

{
  "insecure-registries" : ["myregistrydomain.com:5000"]
}

还在使用 macOS 的媒体上找到了一个教程。看看here

答案 1 :(得分:0)

在 kubernetes 集群内运行注册表是一种选择吗?

这样你就可以使用 NodePort 服务并将图像推送到像这样的地址

  • "localhost:9000/myrepo"。

这很重要,因为 Docker 允许本地主机的不安全(非 SSL)连接。