docker - 无根模式 Docker 守护程序在重新登录 (SSH) 后未运行

标签 docker ubuntu ssh systemctl

根据 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/

相关文章:

azure - 如果我们不在应用程序设置中指定密码,Azure Linux 应用服务上的 docker 是否可以使用 ACR 进行身份验证?

node.js - 带有标志 --legacy-watch 的 Nodemon 不适用于 docker Ubuntu/Linux

python - 导入错误 : cannot import name 'Tk'

linux - 无法使用 key 文件

Docker,一个或多个未使用的构建参数

docker - docker(1.12) 容器的健康检查命令(不在 Dockerfile 中!)

bash - 执行多个进程,然后执行另一个

ssh - 亚马逊 ec2 ssh 权限被拒绝(公钥)

python - 使用Paramiko时的环境变量差异

docker 在 MacOs Sierra 上失败,出现 'MSpanList_Insert 0x8f1000 0x81d2db0339 0x0'