想要在 wls 上的 docker 工具箱中启用“在 tcp//localhost:2375 上公开 docker 守护程序,无需 tls”

想要在 wls 上的 docker 工具箱中启用“在 tcp//localhost:2375 上公开 docker 守护程序,无需 tls”

我使用的是 Windows 10 家庭版,因此无法安装docker for windows版本。在 Windows 上下载并安装 docker toolbox 并在 wls bash 上安装 docker 后,运行以下命令

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add 
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

我在运行docker镜像时收到此错误: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

检查服务 docker 状态时显示未运行

我知道我们需要检查启用情况expose daemon on tcp://localhost:2375 without tls,但我们无法访问 docker 工具箱上的设置 GUI。

还有其他方法可以启用此选项吗?

答案1

我找不到不使用 TLS 来公开 Docker Toolbox Daemon 的方法,但在 WSL 中运行这个对我有用

DOCKER_CERT_PATH='/mnt/c/Users/<user>/.docker/machine/certs'
DOCKER_HOST='tcp://<ip-address>:2376'
docker info

<ip-address>Docker 守护进程正在运行的位置。

答案2

这是一个较老的问题,今天通过编辑被搁置,因此我将继续添加另一个答案,解释 OP 最初遇到的问题。

在提出这个问题的时候,只有 WSL 的第一个版本(现在称为 WSL1)。WSL2 还要一年才会问世。

WSL1 不支持 Docker CE。它是一个“转换层”,而不是虚拟化环境。该转换层尝试将 Linux API 调用映射到 Windows API 调用。它在这方面做得很好,但确实有局限性。Docker 所需的许多 Linux 内核功能(CNAMES、命名空间)都包含在内。

当 WSL2 于 2020 年发布时,它做过通过虚拟化支持这些功能,并允许 Docker 在 WSL2 中本地运行。

但是,原作者还提到了另一个问题,他们之所以尝试这样做是因为 Docker Desktop 无法在 Windows Home 上运行。2018 年提出这个问题时也是如此。Docker Desktop 需要 Windows Hyper-V 来创建 Docker 所需的 VM。

但情况已不再如此。WSL2 的发布(可在 Windows Home 上运行)使 Docker 团队能够重新构建 Docker Desktop使用 WSL2 在 Windows Home 上运行

相关内容