이 가이드에 따라 루트가 아닌 사용자로 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_DIR
export 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 그룹의 구성원일 필요는 없습니다.