Dockerコマンドは一般ユーザーが実行できるように実装されている

Dockerコマンドは一般ユーザーが実行できるように実装されている

dockerをインストールすると、通常はdockerユーザーグループが作成されます。

ステップ2: 現在のユーザーをdockerグループに追加する

sudo gpasswd -a ${USER} docker

ステップ3: Dockerを再起動する

sudo systemctl dockerを再起動します

ステップ4: 読み取りおよび書き込み権限を付与する

sudo chmod a+rw /var/run/docker.sock

補足: 非ルートユーザーにはdockerを使用する権限がありません

docker run を実行するときに権限が要求されない

CentOS に Docker をインストールするための公式ドキュメント

docker-ceをインストールするとdockerユーザーグループが自動的に作成されますが、dockerユーザーグループにユーザーを手動で追加する必要があります。

$ sudo usermod -aG docker $USER

または $ sudo usermod -aG docker {ユーザー名を指定}

しかし、ユーザーをdockerユーザーグループに追加した後も、権限が求められません

たとえば、Ubuntu 14.04 で bash を実行したいとします。

[hsowan@localhost シェルワークスペース]$ docker run -it --rm ubuntu:14.04 bash
docker: unix:///var/run/docker.sock の Docker デーモン ソケットに接続しようとしたときに、アクセスが拒否されました: http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create を投稿: unix /var/run/docker.sock をダイヤル: connect: アクセスが拒否されました。
「docker run --help」を参照してください。

なぜでしょうか? その理由は、ユーザーは docker ユーザー グループに参加しているものの、docker ユーザー グループに切り替えていないため、まだ権限がないためです。

ユーザーが同時に複数のユーザー グループに属している場合、そのユーザーはユーザー グループを切り替えて、他のユーザー グループの権限を持つことができます。

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

非ルートユーザーでdocker関連のコマンドを実行できるようになりました

ユーザーにユーザー グループを追加することに加えて、非ルート ユーザーが docker 関連のコマンドを実行できるようにする他の方法はありますか?

さて、/var/run/docker.sockの権限を確認しましょう

$ sudo ll /var/run/docker.sock

次の結果が得られます。

srw-rw----。1 ルート docker 0 9月22日 15:29 /var/run/docker.sock

では、/var/run/docker.sockの権限を直接変更します。

$ sudo chmod 666 /var/run/docker.sock

これで非ルートユーザーとしてdockerを実行できるようになりました

$ docker run -it --rm ubuntu:14.04 bash
root@5c60abab6425:/# cat /etc/os-release 
名前="Ubuntu"
バージョン="14.04.5 LTS、信頼できる Tahr"
ID=Ubuntu
ID_LIKE=デビアン
PRETTY_NAME="Ubuntu 14.04.5 LTS"
バージョンID = "14.04"
HOME_URL="http://www.ubuntu.com/"
サポートURL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
root@5c60abab6425:/# 終了
出口

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Docker execは複数のコマンドを実行します
  • DockerでLinuxシェルコマンドを実行する方法
  • Dockerはコンテナ外のコンテナ内でコマンドを実行します
  • sudo なしで Docker コマンドを実行する方法
  • docker run後に複数のコマンドを実行する
  • dockerデーモンコマンド実行時のエラー問題を解決する

<<:  MySQLオンラインログライブラリの移行例

>>:  Webフロントエンド開発コース Webフロントエンド開発ツールとは

推薦する

Linux でのルーティングと仮想マシン ネットワークの設定に関する詳細なグラフィック説明

ルーティングとは何ですか?ルーティングとは、相互接続されたネットワークを介して送信元ステーションから...

CSS は Google マテリアル デザインのテキスト入力ボックス スタイルを実装します (推奨)

みなさんこんにちは。今日は、純粋な CSS を使用して Google マテリアル デザインのテキスト...

あるテーブルからバッチデータをクエリし、それを別のテーブルに挿入する MySQL の完全な例

事前に言っておくNodejs はデータベースを非同期操作として読み取るため、データベースがデータを読...

React Diff Principle の詳細な分析

目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...

Web 開発 js 文字列連結プレースホルダーと conlose オブジェクト API の詳細な説明

目次プレースホルダーの置き換えコンソール印刷テーブル()ログ、情報、警告、エラーグループ()、グルー...

SQL Server での exists と except の使用法の概要

目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...

Ubuntu 18.04 のログインループ/ブートインターフェイスで停止/グラフィカルインターフェイスに入ることができない問題を解決する方法

原因: NVIDIA グラフィック カード ドライバーが破損している解決:コマンドラインモードで再起...

カルーセル効果を作成するためのjs

カルーセルはフロントエンド開発において比較的重要なポイントだと思います。ネイティブjsの知識ポイント...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...

18 個のキラー JavaScript ワンライナー

序文JavaScript は習得が最も簡単な言語の 1 つであるため、成長と繁栄を続けており、市場に...

MySQLデータベースでコマンドを自動補完する3つの方法

注意: 3 番目の方法は XSell でのみ使用され、finalsell では使用できません。方法1...

XHTMLコードの一般的なアプリケーション問題をまとめる

時間が経つにつれて、多くの人が XHTML の使い方を知らないことに気づきました。普通の初心者だけで...

nginx をベースにリロードなしでアップストリーム サーバーの動的な自動起動と停止を実装する方法

目次1. Consulクラスタをデプロイする1. 準備3. Consulクラスタを作成する4. 管理...

自動検索提案機能のスタイルファイルを入力します: suggestion.css

コードをコピーコードは次のとおりです。 .sugLayerDiv{位置:相対; overflow:h...

XAML でボタンを円として再描画する方法

XAML レイアウトを使用する場合、インターフェイスを Metro 風にするために、一部のボタンでは...