只能在 WSL2 中以 root 身份运行 docker

问题描述 投票:0回答:1

我刚刚在 Windows 10(最新版本)上升级到 WSL2。我已经安装了最新版本的 Windows 版 Docker (19.03.13),并在 Ubuntu 18 映像上卸载并重新安装了 docker 引擎以匹配 Windows 版本。然而,与我使用 WSL 的经验不同,现在我发现我只能以 root 身份运行 docker 容器命令 - 所有内容都以 sudo 开头。否则,我会收到一条错误消息:“无法连接到位于 tcp://localhost:2375 的 Docker 守护进程。 docker 守护进程正在运行吗?”

我看到一篇文章提到 docker 守护进程以 root 身份运行,要以用户身份运行,你必须将自己添加到 docker 组。然而,这个组已经存在,将我自己添加到其中并没有修复它(我可能已经在其中了)。我看到一些帖子说你必须删除过时的符号链接,但这也没有帮助。

我确实遇到过一篇文章说 docker 实际上应该只以 root 身份运行,但我认为这实际上指的是生产环境。在开发环境中这样做似乎并不正常。如果有人能建议一种以普通用户身份运行 docker 的方法,我将不胜感激。

docker root windows-subsystem-for-linux
1个回答
0
投票

这是我在干净的 Win 10 / 11 机器上使用的一组步骤。结果是非 root Docker 在 WSL 中运行。

打开cmd.exe。

安装 WSL 的默认 Ubuntu 发行版

wsl --install

重新启动 Windows 计算机。

重启后即可看到 Ubuntu 安装程序。等待它完成,然后创建一个非 root 用户名/密码。

您的 cmd.exe 终端现在应该切换到 Ubuntu Linux 终端。

使用便捷脚本安装 Docker 引擎:

下载Docker安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh

运行 rootful Docker 安装脚本:

sudo sh get-docker.sh

安装uidmap包:

sudo apt-get install -y uidmap

运行Docker无根安装工具:

dockerd-rootless-setuptool.sh install

将 Docker 二进制文件添加到您的 PATH(对于当前会话):

export PATH=/usr/bin:$PATH

将 DOCKER_HOST 变量设置为指向无根 Docker 套接字(对于当前会话):

export DOCKER_HOST=unix:///run/user/1000/docker.sock

验证有根和无根 Docker 进程是否正在运行:

ps -aux | grep dockerd

停止以 root 模式运行的 Docker:

sudo systemctl stop docker

禁止 Docker 以 root 模式启动:

sudo systemctl disable docker

检查是否只有无根 Docker 进程正在运行(由当前用户拥有):

ps -aux | grep dockerd

通过运行 hello-world 容器来测试 rootless Docker:

sudo docker run hello-world

将 PATH 和 DOCKER_HOST 变量添加到 ~/.bashrc 以供将来的会话持久化:

echo 'export PATH=/usr/bin:$PATH' >> ~/.bashrc
echo 'export DOCKER_HOST=unix:///run/user/1000/docker.sock' >> ~/.bashrc
© www.soinside.com 2019 - 2024. All rights reserved.