nix를 사용하여 docker를 설치하고 실행하는 방법

nix를 사용하여 docker를 설치하고 실행하는 방법

저는 WSL에서 데비안을 사용하고 있습니다. 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 PierrePierre120 12월 26일 00:41 런타임 디렉토리

버스를 탈 수 있어요. 하지만 sudo를 사용해야 해요

sudo systemctl start docker

지금 나한테는 이런 문제가 있어

docker.service를 시작할 수 없습니다. 단위 docker.service를 찾을 수 없습니다.

내 생각에 docker.service는 /etc/systemd/system/docker.service 파일입니다.

하지만 내 OS에는 존재하지 않습니다. 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/...때때로 다른 사용자가 소유한 경우도 있기 때문입니다(솔직하게는 확실하지 않음)).

그럼 nix를 설정 XDG_RUNTIME_DIR = "/run/user/$UID"하고 다시 시작해 볼 수 있나요?

그래도 작동하지 않으면 로 설정해야 할 수도 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 ..으로 이동한 다음 또는 systemctl start를 사용하여 docker를 시작해야 합니다./bin/./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

관련 정보