根据 official instructions,我已经在 Ubuntu 18.04 LTS 机器上为非 root 用户设置了无根模式 Docker。 。我在用户的 .profile
中将 DOCKER_HOST
设置为 unix://$XDG_RUNTIME_DIR/docker.sock
。这实际上是我自己用来通过 SSH 远程运行容器的非 root 用户帐户。以前我是通过管理员用户使用系统范围的 docker 守护进程和 sudo 来完成此操作,一切正常。但是在这个运行无根docker的非root用户上,我可以启动一个在后台运行的容器(-d
标志),当我重新登录时,容器已经停止了。
这是怎么回事?我已经从用户帐户中使用 systemctl
启动了 docker 守护进程(系统范围的 docker 守护进程已禁用),并且由于我在后台运行容器,所以我想可以记录退出并重新登录,容器仍将运行。但事实似乎并非如此。
我是不是少了一步?无根容器上的 docker 页面指出,要在系统启动时启动守护进程,必须启用 systemd 服务和延迟,其中:
systemctl --user enable docker
sudo loginctl enable-linger $(whoami)
这让我很困惑 - 该用户没有 sudo 权限,而且我不想授予它任何权限,所以我想我需要从该用户帐户内部运行第一行,从我的管理员帐户内部运行第二行,对吧?因此,如果用户名是jim
,对于第二个命令,我想我会执行:
sudo loginctl enable-linger jim
最佳答案
对于需要这样设置的其他人,您需要在非 sudo 帐户中启用 docker,如下所示:
systemctl --user enable docker
然后(假设帐户的用户名是 jim),从具有 sudo 权限的帐户运行以下命令:
sudo loginctl enable-linger jim
有了这个,我成功地从非 sudo 帐户运行 docker(分离),注销,并且当我重新登录时作业仍在运行。
关于docker - 无根模式 Docker 守护程序在重新登录 (SSH) 后未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71372713/