Docker では、chroot は Unix および Linux システムの操作です。実行中のソフトウェア プロセスとそのサブプロセスでは、その明示的なルート ディレクトリを変更すると、プロセスのルート ディレクトリが変更される可能性があるため、このプログラムはアクセスできなくなります。ディレクトリの外側の他のディレクトリ。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
chroot
1979 年に chroot が初めて登場して以来、コンテナ テクノロジが登場しました。
Wikipedia では chroot を次のように定義しています。
は、実行中のソフトウェア プロセスとその子プロセスの見かけのルート ディレクトリを変更する Unix および Linux システムの操作です。この環境で実行され、chroot を介してルート ディレクトリを設定するプログラムは、指定されたルート ディレクトリの外部にあるファイルにアクセスしたり、ファイルを読み取ったり、その内容を変更したりすることはできません。
平たく言えば、chroot はプロセスのルート ディレクトリを変更して、プログラムがディレクトリ外の他のディレクトリにアクセスできないようにすることができます。これはコンテナ内で行うことと非常によく似ています。以下では、例を使用して chroot を説明します。
chroot の説明例:
1), mkdir rootfs
#現在のディレクトリに rootfs という名前のディレクトリを作成します
2), cd rootfs
#ディレクトリ名を入力します: rootfs ディレクトリ
3), docker export $(docker create docker101tutorial) -o docker101tutorial.tar
#コンテナに名前を付けます: のファイル システムdocker101tutorial は、docker101tutorial.tar アーカイブ ファイルとして docker101tutorial.tar にエクスポートされ、保存されます
#これは、単にいくつかのディレクトリを作成し、いくつかのバイナリ ファイルを rootfs
の下に配置することとしても理解できます。4)、tar -xf docker101tutorial.tar
#docker101tutorial.tar ファイルの内容を抽出します
5)、ls
#現在の rootfs ディレクトリ内のファイルの内容を表示します
6)、chroot /Users/xiaoqin.wu/rootfs /bin/sh
#sh プロセスを開始し、/Users/xiaoqin.wu/rootfs を sh プロセスのルート ディレクトリとして使用します
上の図のコマンド 5 の結果を比較します。ls で /Users/xiaoqin.wu/rootfs のファイルの内容を表示します。ディレクトリと sh プロセスでの使用結果 コマンド 7: 現在のプロセスをチェックした ls の結果は一貫しています。この時点で、現在のプロセスとホストが chroot を使用して分離されていることを意味します。ディレクトリ分離コンテナーが完成します。ただし、まだコンテナと呼ぶことはできません。
理由は次のとおりです。
コマンド 8: netstat -nr を使用してルーティング情報を表示します。
結果からわかります。ネットワーク情報は分離されていません。実際、現時点ではプロセスやその他の情報は分離されていません。完全なコンテナーを実装するには、他の 3 つの Linux テクノロジが必要です。つまり、
Namespace
Cgroup
United File System
推奨学習:「docker ビデオ チュートリアル 」
以上がdocker で chroot は何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。