現在、Dockerは起動時にオプションを提供するDockerインストーラを介して少なくとも2つの方法でインストールできます。
- レガシーモード(
docker
ルートで実行または使用sudo docker
) - またルートレスモード(ルートとsudoer以外の場所でdockerを実行する)
何人かの人々は、誤って現在のユーザー(例えばid:gid 1000:1000
)に「rootなしで」Dockerをインストールし、「これが通常のユーザーからDockerを実行するオプションですsudo docker
」と思って間違った選択をしたことを知って戻りたいです。レガシーバージョンに切り替えました(ボーナスポイント:そのユーザーを削除する必要はありません)、バインドマウントは常にroot:root
コンテナ内にインストールされるため、ワークフローと互換性がなくなることがわかりました。既定のグループではなくアクセス権を持つルートレス Docker で権限が拒否されました。)。
従来のDockerをアンインストールする方法についてのドキュメントがありますが、ユーザーを維持しながら既存のユーザーからルートレスバージョンを削除するだけでは十分ではないようです(参照)https://github.com/docker/docker-install/issues/166)。
質問:
ユーザーから「Docker rootless」を削除し、そのユーザーを維持する方法は?たとえば、UbuntuやDebianベースのシステムでは?
目的:通常のDockerに切り替えてユーザーを維持します。ありがとうございます!
上記の質問に対して「Dockerコンテキスト」を変更するなど、さまざまな意見を試しましたが、なぜかこれだけでは不十分です。あるいは、とにかく私の目標を達成するための最小限の順序が何であるかはわかりません。私はこの質問の多くのヒントに従いました。少なくともUbuntuまたはDebianベースのシステムでは、最低限のステップを知ることが最善です。
追加の指示:
$HOME/bin/
私の環境には存在しません。したがって、関係ありません。https://github.com/docker/docker-install/issues/166#issuecomment-606582544)
答え1
私は今日この問題を経験し、非常に残念であり、何の提案も効果がありませんでしたが、解決しました。まず、「rootlessはシステムパッケージを使用しません」というGitHub問題の説明が間違っています。 dockerはaptを介してインストールされました。なぜこの問題が発生するのか、なぜ問題を解決するために対処する必要があるのか理解できませんが、簡単です。
- ドッカーを削除します。
sudo apt remove docker* containerd*
- 再起動! Dockerをアンインストールして
dockerd-rootless
も再起動するまで、バックグラウンドで実行され続けます。 - aptパッケージからDockerを再インストールします(私はhttps://get.docker.comスクリプト)
DOCKER_HOST=unix:///var/run/docker.sock
追加する.bashrc
私が言ったように、DOCKER_HOST
なぜここに設定するのかわかりません。デフォルトでは、ルートされていない場合、私の環境には存在せず、最初からDockerがルートされている他のサーバーにはこのサーバーがありません。しかし今はうまくいくので、これが役に立つことを願っています!