Dockerコンテナでルート権限を取得する方法

Dockerコンテナでルート権限を取得する方法

まず、コンテナが稼働している必要があります

コンテナのCONTAINER IDは、sudo docker container lsまたはsudo docker psで確認できます。

最後にコマンドを実行します(7509371edd48は上記のコンテナIDです)

sudo docker exec -ti -u root 7509371edd48 bash

補足: 非ルートユーザーにdockerコマンドを実行する権限がない問題を解決する

問題の説明:

「Dockerデーモンに接続しようとしたときにアクセスが拒否されました
unix:///var/run/docker.sockのソケット: 取得
http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: ダイヤル Unix
/var/run/docker.sock: 接続: 権限が拒否されました"

理由(Docker マニュアルより):

非ルートユーザーとしてDockerを管理する

docker デーモンは TCP ポートではなく Unix ソケットにバインドします。
デフォルトでは、そのUnixソケットはユーザーrootによって所有され、他のユーザーは
sudoを使用してのみアクセスしてください。dockerデーモンは常にルートとして実行されます
ユーザー。

dockerコマンドを使用するときにsudoを使用したくない場合は、以下を作成します。
dockerというUnixグループを作成し、そこにユーザーを追加します。dockerデーモンが
起動すると、Unixソケットの所有権が読み取り/書き込み可能になります。
docker グループ。

答えは明らかです。ルート ユーザーを使用するか、docker というユーザー グループを作成し、docker を使用するために必要な非ルート ユーザーをそのグループに追加します。まだ方法がわからない場合は、読み続けてください。

方法1:

管理者権限を取得し、docker コマンドを実行するには、sudo を使用します。この方法では、スクリプトを通じて docker コマンドを実行する場合に多くの制限があります。

方法2:

docker デーモンが起動すると、docker という名前のユーザー グループに、デフォルトで Unix ソケットの読み取りと書き込みの権限が与えられます。したがって、docker ユーザー グループが作成され、現在のユーザーが docker ユーザー グループに追加されている限り、現在のユーザーは Unix ソケットにアクセスする権限を持ち、docker 関連のコマンドを実行できます。

sudo groupadd docker #docker ユーザー グループを追加 sudo gpasswd -a $USER docker #ログインしたユーザーを docker ユーザー グループに追加 newgrp docker #ユーザー グループを更新

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

以下もご興味があるかもしれません:
  • Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法
  • ルート権限なしでログインするためのDockerソリューション
  • Dockerでmysqlのルートパスワードを変更する方法
  • Docker を使用してコンテナ内のルート パスワードを変更する方法
  • docker cp ファイルをコピーしてコンテナに入る
  • Dockerはコンテナに入るためにルートを使用する
  • Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策
  • Dockerに証明書を追加する方法

<<:  珍しいけれど役に立つJSテクニックをいくつか紹介します

>>:  HTML テーブルタグについての簡単な説明

推薦する

vue3+threejs を使用して iView 公式サイトのビッグウェーブ特殊効果の例を模倣する

目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...

jQueryはショッピングカート機能を実装します

この記事の例では、ショッピングカート機能を実装するためのjQueryの具体的なコードを参考までに共有...

Node.JS で悪天候のリアルタイム警報システムを構築する

目次序文:ステップ1: 無料の天気予報インターフェースを見つけるステップ2: 天気予報インターフェー...

Linux TTY/PTS の違いの概要

キーボードで文字を入力すると、対応するプロセスにどのように送信されるのでしょうか? ps や who...

ファイルをアップロードするときに enctype フィールドを使用する理由は何ですか?

FORM 要素の enctype 属性は、フォーム データがサーバーに送信されるときに使用されるエン...

MySQLの日付と時刻の間隔計算の分析例

この記事では、例を使用して、MySQL の日付と時刻の間隔計算について説明します。ご参考までに、詳細...

システム外のフォント参照とトランジション効果

コードをコピーコードは次のとおりです。 <span style="font-fami...

MySQL の基本: グループ化関数、集計関数、グループ化クエリの詳細な説明

目次1. 使い方が簡単2. DISTINCTを使用して重複を削除する3. COUNT()の詳細な紹介...

dockerでPostgreSQLを実行する方法

1. Dockerをインストールします。参考URL: Docker 入門インストールチュートリアル ...

Linuxのアラーム機能の例の説明

Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...

CentOS 7 でゲートウェイを変更して IP を設定する方法の例

Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

uniapp パッケージ化されたアプレット レーダー チャート コンポーネントの完全なコード

効果画像:実装コードは以下のとおりですビュー <canvas id="radar-c...

Ubuntu 20.04 に GitLab をインストールして設定する方法

導入GitLab CE または Community Edition は、主に Git リポジトリのホ...

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...