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

ブログ    

推薦する

DockerイントラネットはDNSを構築し、ip:port操作の代わりにドメイン名アクセスを使用します

たとえば、イントラネットに Jenkins サーバーがある場合、そのサーバーにアクセスするには、その...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...

MySQLのロングトランザクションに関する深い理解

序文:この記事では主にMySQLのロングトランザクションに関する内容を紹介します。例えば、トランザク...

Ubuntu インストール cuda10.1 ドライバ実装手順

1. cuda10.1をダウンロードします。 NVIDIA 公式ウェブサイト リンク: https:...

DHTML オブジェクト (さまざまな HTML オブジェクトの共通プロパティ)

!DOCTYPE HTML ドキュメントが準拠するドキュメント型定義 (DTD) を指定します。 ...

Centos7 システム上の nginx サーバーで Phalcon 環境を構築する方法の詳細な説明

この記事では、centos7 システムの nginx サーバーの下に phalcon 環境を構築する...

重複データの処理に関するMySQL学習ノート

MySQLは重複データを処理します一部の MySQL テーブルには重複レコードが含まれている場合があ...

Dockerコンテナの自動終了を停止する方法の詳細な説明

この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できる...

Docker で MySQL データベースを使用して LAN アクセスを実現する

1. MySQLイメージを取得する docker pull mysql:5.6注: mysql5.7...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

この記事では、CSSの2列レイアウトと3列レイアウトの具体的な使い方をまとめます。

序文大規模なフロントエンドの開発に伴い、UI フレームワークが次々と登場し、フロントエンド開発におけ...

HTML 終了タグの問題と W3C 標準

W3C の原則によれば、XML の各開始タグには対応する終了タグが必要です。つまり、<html...

jQueryは居住地を選択するためのドロップダウンボックスを実装します

居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...

MySQL 8.0.19 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...

NginxはGzipアルゴリズムを使用してメッセージを圧縮します

HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...