Systemd가 감지되지 않으며 dockerd 데몬을 수동으로 시작해야 합니다.

Systemd가 감지되지 않으며 dockerd 데몬을 수동으로 시작해야 합니다.

이 가이드에 따라 루트가 아닌 사용자로 Docker 데몬을 설치하려고 합니다. https://docs.docker.com/engine/security/rootless/

먼저 기존 루트풀 도커 데몬을 삭제했습니다.

그런 다음 사용자를 생성하여 그룹 docker-user의 구성원으로 만들었습니다.docker

그런 다음 다음과 같이 해당 docker 사용자의 셸로 전환합니다.

sudo -iu docker-user

그리고 위 링크에 제공된 루트 없는 도커 설치 스크립트를 실행하세요.

스크립트 출력:

docker-user@ubuntu:~$ curl -fsSL https://get.docker.com/rootless | sh
# Installing stable version 19.03.8
# Existing rootless Docker detected at /home/docker-user/bin/dockerd
# systemd not detected, dockerd daemon needs to be started manually

/home/docker-user/bin/dockerd-rootless.sh --experimental --storage-driver vfs

# Docker binaries are installed in /home/docker-user/bin
# Make sure the following environment variables are set (or add them to ~/.bashrc):

export DOCKER_HOST=unix:///tmp/docker-1003/docker.sock

스크립트를 보고 false인 경우 systemd not detected, dockerd daemon needs to be started manually이 줄을 출력합니다 .systemctl --user daemon-reload

의 출력은 systemctl --user daemon-reload다음과 같습니다

docker-user@ubuntu:~$ systemctl --user daemon-reload
Failed to connect to bus: No such file or directory

도커를 수동으로 시작하고 싶지는 않습니다. 일반적인 도커 설치처럼 서비스로 실행해야 합니다. 가이드에 따르면 서비스로 실행할 수 있어야 합니다. 내가 뭘 잘못했나요?

답변1

문제를 해결하기 전에 로그인을 사용 pam_systemd하거나 사용자에 대한 사용자 지연을 활성화해야 합니다 systemctl --user.

사용해야 합니다 pam_systemd(원천)

다음 방법 중 하나를 시도해 보십시오.

  • 그래픽 콘솔을 통해 로그인
  • ssh <user>@localhost
  • machinectl shell <user>@

로그인하면 세션이 표시됩니다 loginctl list-sessions. 이런 일이 발생하면 문제 해결 을 계속 진행하십시오 systemctl --user.

그렇지 않고 위의 방법 중 어느 것도 효과가 없으면 아래 설명된 대로 사용자 지연을 활성화해 보십시오.

사용자 지연 활성화( 사용 loginctl)

사용자가 방황했는지 확인

ls /var/lib/systemd/linger(원천)

여기에 사용자가 표시되면 문제 해결을 계속하세요 systemctl --user.

그렇지 않으면 사용자 방황을 활성화합니다 loginctl enable-linger <user>. <user>현재 사용자를 사용하려면 매개변수를 생략할 수 있습니다 .

그러면 사용자에게 가 표시됩니다 ls /var/lib/systemd/linger.

문제 해결systemctl --user

이제 사용자가 활성 상태인지 pam_systemd아니면 느린 상태인지 확인했으므로 다음에 연결해 볼 수 있습니다 systemd.

달리기systemctl --user

이 명령이 오류 없이 실행되면 systemd루트 없는 Docker를 설치할 준비가 된 것입니다.

인쇄된 경우 올바른 값으로 Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)설정합니다 (보통 ).$XDG_RUNTIME_DIRexport XDG_RUNTIME_DIR=/run/user/$UID

그런 다음 실행systemctl --user

이 명령이 오류 없이 실행되면 systemd루트 없는 Docker를 설치할 준비가 된 것입니다.

이 메시지가 나타나면 Failed to connect to bus: No such file or directory로그인이 되지 않았 pam_systemd거나 사용자 지연이 활성화되어 있을 수 있습니다.

답변2

루트가 아닌 사용자로 SSH를 통해 로그인하고 스크립트를 실행해야 합니다.

sudo -iu docker-user

ssh docker-user@hostname

( docker-user예시입니다. 대상 시스템에 있는 루트가 아닌 사용자를 사용하세요.)

이 사용자는 docker 그룹의 구성원일 필요는 없습니다.

관련 정보