このガイドに従って、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_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
root以外のユーザーとしてSSH経由でログインし、スクリプトを実行する必要があります。
sudo -iu docker-user
ssh docker-user@hostname
(docker-user
例です。ターゲットシステムの非rootユーザーを使用してください。)
このユーザーはdockerグループのメンバーである必要はありません。