質問
だから...私は以下を除いてさまざまなコマンドをテストしました。
docker pull gcr.io/...
いつも権限が足りないと出てきます。
エラー:認証されていません:これを行うために必要な権限がなく、資格情報が無効である可能性があります。リクエストを確認するには、次の手順に従ってください。https://cloud.google.com/container-registry/docs/advanced-authentication
なぜですか?
kubectl ...
同じ承認が必要なコマンドを実行できるため、Google Cloudに正しくログインしていると100%確信しています。
私の環境
所有者
私はamd64でLinux Ubuntu(現在22.04)を実行しています。
ゲスト
さまざまな理由で、このマシンで仮想マシンを実行する必要があります。そのため、VirtualBox VMで実行される別のUbuntu 22.04をインストールしました。上記のように、すべてがうまく機能します。
ルーストアバウト
現在、dockerはsnap
バージョン20としてインストールされています。
メモ:パッケージが更新されず、非常に古いため、デフォルトのapt-getパッケージは使用できません。
失敗したコマンドは次のとおりです。
docker pull gcr.io/<path>/<to>/<file>:main-123456
答え1
ここにはいくつかの質問があります。
スナップショットドッカー
docker
in バージョンはsnap
protected ですapparmor
。
ピリオドで始まるサブディレクトリからファイル(複数?)を読み取る必要があるため、認証に失敗しました(ファイルが認証されて.docker/...
いるにもかかわらずapparmor
)。
質問で述べたように、以前のバージョンでは問題は解決されません。だから私たちには新しいものが残りました。ドッカーデスクトップ代わりにバージョン。
ドッカーデスクトップ
(インストール、起動、および使用に関する以下の注意事項を参照してください)
Docker Desktopは新しい獣です。より多くのセキュリティ機能があり、いくつかの点で優れていますが、より多くのリソースが使用されるという点で面倒です。特に、コンピュータのVM機能を使用してdockerを実行します。これは、ルートとして実行できる環境を分離するための良い方法です。
ここで別の問題が発生します!すでに仮想マシンで実行している場合は、ゲストが直接仮想マシンを作成できない可能性があります。入れ子になった仮想デバイス。仮想マシンにネストされた仮想マシンを作成する権限があることを確認しないと、この操作は失敗します。 VirtualBoxには、特にこの目的のためにインターフェイスで調整するオプションがあります。
以下は、デフォルト値(つまり、認証されていない)を示すスクリーンショットです。Nester VT-x/AMD-Vを有効にするロゴが選択されました。選択されていない場合は、仮想マシンを終了し、チェックボックスを選択して仮想マシンを再起動する必要があります。
追加のガイドライン
スナップの削除
まず、スナップを削除する必要があります。これは以下を使用して行われます。
snap remove docker
警告する:Dockerは、Dockerを再インストールするときに復元したい場合に備えて、既存のコンテナとイメージを完全にバックアップします。ほとんどのコンテナは非常に大きなファイルなので、時間がかかることがあります。しばらく時間をかけて、次の項目を最初に削除することをお勧めします。
$ docker ps -a
$ docker rm <container-id>
$ ...repeat until `docker ps -a` returns an empty list...
$ docker images
$ docker rmi <image-id>
$ ...repeat until `docker images` returns an empty list...
メモ:を使用して一部の画像を削除する必要があります--force
。私たちはすべてを取り除いているので、当然安全。
デスクトップDockerのインストール
このバージョンを直接インストールできるとします。 Ubuntuの指示はここにあります。
https://docs.docker.com/desktop/install/ubuntu/#install-docker-desktop
メモ:通常のPPAとは異なり、.debを直接インストールすることはできません.deb
。代わりに.debを「手動で」ダウンロードしてインストールする必要があります。その後、必要なすべての依存関係などを収集します。私に尋ねたら変です。
有効/有効
インストールが完了したら実行できます。私の場合は、以下を使用しました。
$ systemctl --user enable docker-desktop
$ systemctl --user start docker-desktop
最初にできない場合は、もう一度試してください...
ユーザードッカー
デスクトップウィンドウが開いていてスピンホイールで「Dockerを起動」と言わない場合は、Dockerが実行されており、シェルにコマンドを入力できます。
docker pull gcr.io/<path>
これが魅力のように作用すると期待してください。
注:このdocker-compose
コマンドはdocker compose
ダッシュがないため、別のツールではなくdockerのサブコマンドです。