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フロントエンド開発ツールとは

推薦する

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

Ubuntu MySQL バージョンが 5.7 にアップグレードされました

数日前、図書館はサーバー(Ubuntu 14.04)にセキュリティ上の脆弱性があり、時間通りに修復さ...

ウェブページを自動更新するための 3 つのコード

実際、この効果を実現するのは非常に簡単で、この効果は特殊効果と呼ぶことすらできません。次のコードを ...

ドロップダウンボックス選択コンポーネントを実装するためのネイティブ js

この記事の例では、ドロップダウンボックス選択コンポーネントを実装するためのjsの具体的なコードを参考...

MySQL トリガーの使用シナリオとメソッドの例

トリガー:トリガーの使用シナリオと対応するバージョン:トリガーは次の MySQL バージョンで使用で...

複数の無関係なテーブルからデータをクエリし、MySQL でページングする方法

MySQL 複数の無関係なテーブルクエリデータとページング機能要件主キーと外部キーの関連付けがない ...

ブラウザは関連するHTTPヘッダーをキャッシュし、HTTPリクエストの数を最小限に抑えます。

最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...

HTMLページの読み込み速度を上げる方法

(1)HTTPリクエストを減らす。 (リソース ファイルをマージし、イメージ スプライトを使用します...

CentOS 7 に Percona Server+MySQL をインストールする

1. 環境の説明(1) CentOS-7-x86_64、カーネルバージョン uname -r は、 ...

JavaScript データ プロキシとイベントの詳細な分析

目次データブローカーとイベントObject.defineProperty メソッドのレビューデータブ...

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...

reactにおけるstateの略語の詳細な説明

序文国家とは何か私たちは皆、React はステート マシンであると言います。それはどのように反映され...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

HTMLとリソースがどのように読み込まれるかを理解します

このブログのすべてのコンテンツは、クリエイティブ コモンズ ライセンスの下でライセンスされています。...