ルートレスドッカー

Rutoresudokka



Docker は、最新のアプリケーションの開発と展開にとって最も強力で影響力のあるツールの 1 つです。開発者として、私たちはローカル マシン上でこれを使用して、アプリケーションのニーズに合わせた環境を数秒でセットアップおよび構成します。

ただし、Docker で作業している場合、Docker リソースを作成して使用する必要があるにもかかわらず、root アクセス権がない場合に遭遇する可能性があります。

あるいは、すべてのユーザーに root 権限を与えずに、特定のシステム上の複数のユーザーが Docker にアクセスして使用できるようにしたい場合もあります。







このチュートリアルでは、ルートレス Docker について、その意味、仕組み、そしてルートレス Docker を使用してルートアクセス権のないユーザーが Docker とその関連サービスを使用できるようにする方法について学びます。



ルートレス Docker とは何ですか?

デフォルトでは、Docker をインストールすると、Docker デーモンとそのツールにはホスト システム上の root 権限が必要になります。これにより、Docker が侵害された場合に重大なセキュリティ リスクが発生する可能性があり、攻撃者に root アクセスが与えられる可能性があります。



Rootless Docker は、root 権限なしで Docker デーモンと関連コンテナーを使用および実行できるようにする機能です。





使い方

rootless docker 環境の技術的な仕組みを詳しく理解するのは難しい場合がありますが、rootless docker が何を行うのか、内部でどのように動作するのかを説明する高レベルの概要を以下に示します。

ユーザー名前空間 – ルートレス Docker が利用する重要な機能の 1 つは、ユーザー名前空間です。 Linux カーネルのこの基本的な機能により、プロセスは名前空間の内側と外側では異なるユーザー ID とグループ ID を持つことができます。これは、プロセスはネームスペース内では root ユーザーとして実行できますが、ネームスペース外では通常のユーザーとして実行されることを意味します。



ネットワーキング – rootless Docker の次の機能はネットワークです。デフォルトでは、通常の Docker デーモンは、root 権限を必要とする iptables やブリッジなどのネットワーク スタックに依存します。

Docker は、ルートレス Docker でユーザーモード TCP/IP スタックを提供する slirp4netns などの機能を利用します。これにより、Docker はホスト システム上の root 権限なしでネットワークにアクセスできるようになります。

ストレージ – ルートレス Docker の次に重要な部分はストレージ ドライバーです。デフォルトでは、Docker は overlay2 ストレージ ドライバーを使用します。これには、ご想像のとおり、root 権限が必要です。代わりに、ルートレス Docker インスタンスは、fuse-overlayfs ドライバーを使用します。このドライバーは FUSE オーバーレイ fs に基づいており、root 権限なしでマウントできます。

上記は、ルートレス Docker インスタンスの重要なコンポーネントの一部です。これは、ルートレス Docker の完全な仕組みを調査するものではないことに注意してください。詳細については、ドキュメントを参照してください。

ルートレス Docker – 要件

理論から離れて、ルートレス Docker 環境を作成および構成する方法を学びましょう。

この投稿を進めるには、次のものが揃っていることを確認してください。

  1. root 権限を持つ Linux ベースのシステム。
  2. ネットワークアクセス。

UIDMap を使用したシステムの構成

Docker をインストールして構成する前に、uidmap ユーティリティを使用してシステムをインストールし、構成する必要があります。

UIDMap を使用すると、ユーザー名前空間のコンテンツ内の Linux システム内のプロセスの UID および GUI マッピングを管理できます。ルートレス Docker がユーザー名前空間を利用するという話をしたのを覚えていますか?このツールを使用すると、UID および GID マッピングと、それらに対応する名前空間を指定できます。

まず、次のようにシステム パッケージを更新します。

$ 須藤 apt-getアップデート

次に、次のように uidmap ユーティリティをインストールします。

$ 須藤 apt-get インストール uidmap -そして

ルートレス Docker のインストール

次のステップは、rootless Docker を処理してインストールすることです。これは、以下に概説する簡単な手順に従って行うことができます。

まず、以下に示すリンクから rootless Docker インストーラー スクリプトをダウンロードします。

https://get.docker.com/rootless

cURL または WGET を使用できます。

$ カール -sSL https: // get.docker.com / 根無し草 | しー

上記のコマンドは root ユーザーとしては実行できないことに注意してください。

インストールが完了したら、お気に入りのテキスト エディターを使用して .bashrc ファイルを編集します。

$ ナノ .bashrc

次に、次のエントリを bashrc 構成ファイルに追加します。

輸出 XDG_RUNTIME_DIR = / / ubuntu / .docker / 走る

輸出 パス = / / ubuntu / 置き場: $パス

輸出 DOCKER_HOST =ユニックス: /// / ubuntu / .docker / 走る / docker.sock

ユーザーを「ubuntu」から、Docker をインストールするユーザーに変更してください。スクリプト出力には、.bashrc ファイルに追加する内容が表示されます。

変更を保存してエディタを閉じます。

次のステップでは、ルートレス Docker デーモンを開始する必要があります。以下のコマンドに示すように、systemctl を使用してこれを行うことができます。

システムctl --ubuntu ドッカーを起動します

開始したら、Docker コマンドを使用して Docker コンテナーを開始および構成できます。

結論

このチュートリアルでは、ルートレス Docker の機能、その仕組み、および Linux システム上での設定方法について学びました。詳細については、rootless Docker のドキュメントを参照してください。