我在 WSL 上使用 Debian。 Nix 已经安装。
我使用以下命令安装 docker:
nix-env -iA nixpkgs.docker
我想启动守护进程:
systemctl start docker
无法连接到总线:没有这样的文件或目录
更新
仅供参考 $XDG_RUNTIME_DIR= /mnt/wslg/runtime-dir $UID=1000 $DBUS_SESSION_BUS_ADDRESS 没有值
ls -l /mnt/wslg/runtime-dir
drwx------ 4 皮埃尔 皮埃尔 120 十二月 26 00:41 运行时目录
我可以乘坐巴士。但我需要使用 sudo
sudo systemctl start docker
现在我有这个问题
无法启动 docker.service:找不到单元 docker.service。
我认为 docker.service 是这个文件:/etc/systemd/system/docker.service
但它在我的操作系统上不存在。我尝试使用 nix 卸载并重新安装 docker。无济于事
我认为这是有联系的:
https://discourse.nixos.org/t/docker-packages-systemd-unit-files-dont-work-on-ubuntu/12160
sudo cp ~/.nix-profile/etc/systemd/system/docker.service /etc/systemd/system/docker.service
sudo cp ~/.nix-profile/etc/systemd/system/docker.sock /var/run/docker.sock
sudo systemctl enable docker
Failed to start docker.service: Unit docker.socket not found.
无法启动 docker.service:找不到单元 docker.socket。
读完这篇文章后关联,我使用此命令是为了知道应该在哪里替换 docker.socket 文件。 :
systemctl list-sockets --all
但没有列出 docker.socket
**更新
我从头开始编写了所有命令。现在我遇到了这个问题 docker.service 的依赖作业失败。有关详细信息,请参阅“journalctl -xe”。
答案1
如果我正确理解了问题,您必须XDG_RUNTIME_DIR
手动设置(因为/run/user/...
有时由其他用户拥有??(不太确定说实话)):
那么你可以尝试设置XDG_RUNTIME_DIR = "/run/user/$UID"
然后再次启动nix吗?
如果这不起作用,您可能还必须设置DBUS_SESSION_BUS_ADDRESS
为DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
.
您可以在这里找到与您类似的线程: https://superuser.com/questions/1561076/systemctl-user-failed-to-connect-to-bus-no-such-file-or-directory-debian-9
这有帮助/解决你的问题吗?
答案2
您必须查找目录,使用cd ..
并转到/bin/
,那里有您的程序,然后开始使用./docker
或 systemctl start docker。
答案3
sudo groupadd docker
sudo chgrp docker docker.sock
sudo systemctl start docker
无错误信息
答案4
需要修改默认的docker.service
,例如更改启动参数
[Unit]
...
Requires=~/.nix-profile/etc/systemd/system/docker.socket
[Service]
...
ExecStart=/home/xx/.nix-profile/bin/dockerd -H unix:///var/run/docker.sock
可能你需要重新加载
sudo systemctl daemon-reload