Systemdが検出されず、dockerdデーモンを手動で起動する必要があります。

Systemdが検出されず、dockerdデーモンを手動で起動する必要があります。

このガイドに従って、root以外のユーザーとして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

root以外のユーザーとしてSSH経由でログインし、スクリプトを実行する必要があります。

sudo -iu docker-user

ssh docker-user@hostname

docker-user例です。ターゲットシステムの非rootユーザーを使用してください。)

このユーザーはdockerグループのメンバーである必要はありません。

関連情報