Linux で非ルートユーザーとして Docker を実行するにはどうすればいいですか?

Linux で非ルートユーザーとして Docker を実行するにはどうすればいいですか?

[51CTO.com 速訳] UbuntuにDockerをインストールするのは簡単!初心者でも15分以内にインストールを完了できます。 Docker をインストールした後、通常のユーザーとしてほとんどの Docker 操作を実行できないことに気付きました。毎回、Docker を「root」ユーザーとして、または「sudo」権限で実行する必要がありました。非ルート ユーザーとして、または sudo 権限なしで Docker を実行しようとすると、次のエラーが発生します。

  1. 試みているときにアクセスが拒否されました 接続する  unix:///var/run/docker.sockDocker デーモン ソケット: http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version を取得: unix /var/run/docker.sock にダイヤル:接続: 権限が拒否されました

たとえば、次のコマンドを使用して、通常のユーザーとして Docker のバージョンを確認します。

  1. $ docker バージョン

次のエラー メッセージも表示されます:

  1. クライアント: Docker Engine - コミュニティ
  2. バージョン: 19.03.8
  3. APIバージョン: 1.40
  4. Goバージョン: go1.12.17
  5. Gitコミット: afacb8b7f0
  6. 作成日: 2020年3月11日水曜日 01:25:46
  7. OS/アーキテクチャ: linux/amd64
  8. 実験的: 
  9. 試みているときにアクセスが拒否されました 接続する  unix:///var/run/docker.sockDocker デーモン ソケット: http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version を取得: unix /var/run/docker.sock にダイヤル:接続: 権限が拒否されました

しかし、同じコマンドを sudo 権限で実行すると次のようになります。

  1. $ sudo docker バージョン

以下に示すように、現在インストールされている Docker バージョンの詳細が表示されます。

  1. クライアント: Docker Engine - コミュニティ
  2. バージョン: 19.03.8
  3. APIバージョン: 1.40
  4. Goバージョン: go1.12.17
  5. Gitコミット: afacb8b7f0
  6. 作成日: 2020年3月11日水曜日 01:25:46
  7. OS/アーキテクチャ: linux/amd64
  8. 実験的: 
  9. サーバー: Docker Engine - コミュニティ
  10. エンジン:
  11. バージョン: 19.03.8
  12. API バージョン: 1.40 (最小バージョン 1.12)
  13. Goバージョン: go1.12.17
  14. Gitコミット: afacb8b7f0
  15. 作成日: 2020年3月11日水曜日 01:24:19
  16. OS/アーキテクチャ: linux/amd64
  17. 実験的: 
  18. コンテナ:
  19. バージョン: 1.2.13
  20. GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
  21. ランク:
  22. バージョン: 1.0.0-rc10
  23. GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
  24. docker-init:
  25. バージョン: 0.18.0
  26. Gitコミット: fec3683

Docker のドキュメント ページを検索したところ、Docker デーモンはデフォルトで TCP ポートではなく Unix ソケットにバインドしていることに気付きました。この Unix ソケットは root ユーザーによって所有されているため、Docker デーモンは root ユーザーとしてのみ実行できます。そのため、一般ユーザーはほとんどの Docker コマンドを実行できません。

Linux で非 root ユーザーとして Docker を実行する場合は、次の手順を実行する必要があります。 Ubuntu 18.04 サーバーでテストしたところ、問題なく動作しました。他の Linux ディストリビューションでも動作するはずです。

Linux で非ルートユーザーとして Docker を実行する

Docker 権限拒否エラーを解決し、Docker を非ルート ユーザーとして使用するには、次のコマンドを使用して「docker」というグループを作成します。

  1. $ sudo グループ追加 docker

次に、ユーザーを docker グループに追加します。

  1. $ sudo usermod –aG docker $ USER  

ユーザーを docker グループに追加した後、変更を有効にするためにログアウトして再度ログインします。

または、次のコマンドを実行してグループに変更を加えます。

  1. $ 新しいグループドッカー

今後は、通常のユーザー (非 root ユーザー) は sudo 権限なしで Docker を使用できるようになります。

通常のユーザーとして次のコマンドを実行してみましょう。

  1. $ docker バージョン 
  2. $ docker run hello-world

サンプル出力:

見る?これで、両方の Docker コマンドを sudo 権限なしで実行できるようになりました。

ユーザーを Docker グループに追加する前に、「sudo」権限でいくつかの Docker コマンドを実行した場合、次のようなエラーが表示されることがあります。

  1. 警告: 設定ファイルの読み込みエラー: /home/ user /.docker/config.json -
  2. stat /home/ user /.docker/config.json: 権限が拒否されました

上記のエラー メッセージは、「sudo」コマンドにより ~/.docker/ ディレクトリが誤った権限で作成されたことを示しています。これを修正するには、次のコマンドを使用してディレクトリの所有権と権限を変更します。

  1. $ sudo chown "$USER" : "$USER" /home/ "$USER" /.docker -R
  2. $ sudo chmod g+rwx "$HOME/.docker" -R

有効にするには、ログアウトして再度ログインしてください。

それでも問題が解決しない場合は、~/.docker/ ディレクトリを削除する必要がある可能性があります。ディレクトリは自動的に再作成されますが、カスタマイズがあった場合はその内容は失われます。

この記事がお役に立てば幸いです。

元のタイトル: Linux で非ルートユーザーとして Docker を実行する方法、著者: SK

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  5G時代のもう一つの「爆発的な」アプリケーション、クラウドゲームの未来とは?

>>:  TRTC は、高同時実行性と高可用性を備えたリアルタイムのオーディオおよびビデオ インタラクティブ シナリオの実装に役立ちます (開発上の利点を含む)

推薦する

Google ペンギン アルゴリズム分析: SEO は死んではいないが、柔軟に対応する必要がある

Google ペンギン アルゴリズムの登場は、英語の SEO 業界に大きな変化をもたらし、ブラック ...

ウェブマスターになることについてお話ししましょう。

インターネットに触れるようになってから1年が経ちました。少し前、私は難しい決断を下し、いくつかの国営...

企業がSEOソリューションを見つける方法

組織が SEO の必要性を認識したら、社内に人材を雇うか、外部のコンサルタントやサービス プロバイダ...

Kubernetesを一緒に学ぶ: 自動スケーリング

Kubernetes では、現在のリソース要件に基づいてワークロードをスケーリングできます。これによ...

ロビンの魔法のサイトを見て、今後の最適化について考える

今日、グループの友人がSEO界で人気のワード「SEOトレーニング」のスクリーンショットを送ってきまし...

2021 年に、エッジ コンピューティングという収益性の高いビジネスを発見したのは誰でしょうか?

[[377410]] 2021年は新たな5年間の始まりであり、誰もが新たな窓と新たな機会を求めていま...

ランキングのために外部リンクを送信せずにウェブサイトの関連性を高める

ウェブサイトのランキングの重要な要素は誰もが知っています。Google は外部リンクを重視しますが、...

セルフメディアはどうやって収益を得るのでしょうか? 同盟ではなく企業と提携する

最近、セルフメディアは死ぬだろうと騒ぎ立てる辛辣なメディア記事がありましたが、それはまるで「ワンワン...

SEO がウェブサイトの持続可能な開発にどのように役立つか

ウェブサイトが継続的な発展と進歩を遂げたい場合、既存の成果を常に強化し、新しいホットスポットを発見し...

2019 年に堅実なクラウド移行戦略を構築する方法

組織のオンプレミス IT インフラストラクチャをクラウドに移行することは、多くの企業が行う最も重要な...

Baidu 検索 SEO 関連キーワードに新しいヒントがあります

先ほど Baidu で「SEO」を検索したところ、画像のように、Baidu が自然ランキングの下に親...

無視されている3つのQQマーケティングスキル

QQ は、業界では最も多くのユーザーを抱えるプラットフォームとして常に知られています。かつて誰かが「...

K8s のアップグレードにより Didi が 12 時間停止したのですか?

みなさんこんにちは。ジュン兄です。少し前に起きた Didi の障害については、皆さんご存知だと思いま...

天一クラウドのハードコア技術は、石家荘の検疫ポイントでスローライブ放送で流行と戦い、クリック数は3億8200万に達した。

河北省の地方政府は、流行を予防・抑制するため、1月13日から黄荘に集中隔離施設を数カ所建設することを...