AUFS は、Docker でサポートされている最も古いストレージ エンジンです。 AUFS は Union File System であり、ファイル レベルのストレージ ドライバーです。これは、Docker の初期の頃に使用されていたストレージ ドライバーでした。Docker バージョン 18.06 および Ubuntu バージョン 14.04 より前に推奨されていました。xfs および ext4 ファイルをサポートしています。
このチュートリアルの動作環境: linux7.3 システム、docker バージョン 20、Dell G3 コンピューター。
AUFS は、Docker でサポートされている最も古いストレージ エンジンです。
Docker のストレージ エンジン
Docker のストレージ エンジンは次のように設計されていますが、ファイル システムが異なると、異なるストレージで構成されます。達成するためのドライバー。次に、Docker のストレージ ドライバーについて説明します。
Docker には主に次のタイプのストレージ ドライバーがあります:
overlay2: 現在のバージョンで推奨されるストレージ ドライバーであり、追加の依存関係や構成なしで優れたパフォーマンスを実現できます。 . .バージョン 18.09 以降のオーバーレイ ストレージ ドライバーを置き換えました。 xfs、ext4 ファイル システムをサポートします。
aufs: Docker で使用される最も古いストレージ ドライバー。Docker 18.06 バージョンおよび Ubuntu 14.04 バージョンより前に推奨されます。 xfs、ext4 ファイル システムをサポートします。
devicemapper: これは、overlay2 をサポートしておらず、直接 LVM サポートを必要とするため、CentOS および RHEL システムの以前のバージョンに推奨されるストレージ ドライバーです。
btrfs: btrfs ファイル システムのみ。
zfs: zfs ファイル システムのみ。
vfs: ファイル システムには依存しませんが、パフォーマンスは非常に低く、主にテストに使用されます。
overlay2、overlay、および aufs レイヤーはファイルに基づいていることに注意してください。単一ファイルの書き込み同時実行性が高い場合、大規模なメモリのサポートが必要になり、読み取り単一のファイルは非常に大きくなります。 devicemapper、btrfs、および zfs のレイヤーはブロック ストレージに基づいているため、単一ファイルの高い同時実行性にほとんど影響を与えません。ただし、btrfs と zfs は非常にメモリを消費します。
docker AUFS
AUFS は Union File System です。いわゆる UnionFS は、異なる物理的な場所にあるディレクトリをマージしてマウントします。同じディレクトリです。 UnionFS の最も重要なアプリケーションの 1 つは、CD/DVD とハードディスク ディレクトリを共同でマウントすることです。その後、この読み取り専用 CD/DVD 上のファイルを変更できます (もちろん、変更されたファイルはディレクトリに保存されます)ハードドライブ上にあります)。
AUFS は Another UnionFS とも呼ばれ、その後 Alternative UnionFS と呼ばれましたが、横暴さが足りないため Advance UnionFS と呼ばれるようになりました。 2006 年に岡島順次郎によって開発された AUFS は、初期の UnionFS 1.x を完全に書き直しました。その主な目的は信頼性とパフォーマンスであり、書き込み可能なブランチなどのいくつかの新機能が導入されました。 AUFS は、現在使用されている UnionFS と完全な互換性があり、以前の UnionFS よりも安定性とパフォーマンスが大幅に向上しており、その後、UnionFS 2.x が AUFS の機能をコピーし始めました。しかし実際には、Linus が許可しなかったため、彼は Linux トランクに入らなかったのです。基本的に、コードの量が比較的多く、記述が不十分だったためです (ユニオン マウントのわずか 3,000 行とユニオンFS の 10,000 行と比較して)。など、平均わずか 6,000 行のコードがありますが、VFS のコード行数は約 30,000 行で、AUFS の実際のコード行数は 30,000 行です)。したがって、岡島氏はコードの品質を向上させ続け、提出し続けましたが、常に Linus によって拒否されました。その日、AUFS は Linux トランクに入ることができません (今日、AUFS のコードは実際に非常に優れており、OpenSSL の N 倍優れていることがわかります。Linus はコード品質に対して非常に高い要件を持っているか、Linus が単に AUFS を好まないかのどちらかです)。
ただし、幸いなことに、Ubuntu 10.04、Debian6.0、Gentoo Live CD など、多くのディストリビューションで AUFS が使用されているため、問題ありません。
さて、このゴシップをすべて終えたので、例を見てみましょう (環境: Ubuntu 14.04)
まず、2 つのディレクトリ (果物と野菜) を作成し、これら 2 つのディレクトリにいくつかのファイルを置きます果物にはリンゴとトマトが含まれ、野菜にはニンジンとトマトが含まれます。
$ tree . ├── fruits │ ├── apple │ └── tomato └── vegetables ├── carrots └── tomato
次に、次のコマンドを入力します。
# 创建一个mount目录 $ mkdir mnt # 把水果目录和蔬菜目录union mount到 ./mnt目录中 $ sudo mount -t aufs -o dirs=./fruits:./vegetables none ./mnt # 查看./mnt目录 $ tree ./mnt ./mnt ├── apple ├── carrots └── tomato
./mnt ディレクトリに、apple、キャロット、トマトという 3 つのファイルがあることがわかります。果物と野菜のディレクトリは ./mnt ディレクトリに結合されます。
ファイルの内容を変更してみましょう:
$ echo mnt > ./mnt/apple $ cat ./mnt/apple mnt $ cat ./fruits/apple mnt
上の例では、./mnt/apple の内容が変更され、./fruits/ の内容が変更されたことがわかります。リンゴも変わってしまいました。。
$ echo mnt_carrots > ./mnt/carrots $ cat ./vegetables/carrots $ cat ./fruits/carrots mnt_carrots
上の例では、./mnt/キャロットのファイル内容を変更しましたが、./vegetables/キャロットは変更されておらず、代わりにニンジンがディレクトリ./fruits/キャロットに表示されていることがわかります。 . ファイルの内容は、./mnt/キャロットにあるものです。
つまり、mount aufs コマンドでは、野菜や果物のディレクトリ権限を参照しませんでした。デフォルトでは、コマンド ラインの最初 (左端) のディレクトリは読み取りおよび書き込み可能です。以降はすべて読み取り可能です。は読み取り専用です。 (一般的に、最初のディレクトリは書き込み可能であり、次のディレクトリは読み取り専用である必要があります)
したがって、次のように aufs をマウントする権限を指定すると、同じ効果がないことがわかります (最初に上記の ./fruits/キャロット ファイルを忘れずに削除してください):
$ sudo mount -t aufs -o dirs=./fruits=rw:./vegetables=rw none ./mnt $ echo "mnt_carrots" > ./mnt/carrots $ cat ./vegetables/carrots mnt_carrots $ cat ./fruits/carrots cat: ./fruits/carrots: No such file or directory
现在,在这情况下,如果我们要修改./mnt/tomato这个文件,那么究竟是哪个文件会被改写?
$ echo "mnt_tomato" > ./mnt/tomato $ cat ./fruits/tomato mnt_tomato $ cat ./vegetables/tomato I am a vegetable
可见,如果有重复的文件名,在mount命令行上,越往前的就优先级越高。
你可以用这个例子做一些各种各样的试验,我这里主要是给大家一个感性认识,就不展开试验下去了。
那么,这种UnionFS有什么用?
历史上,有一个叫Knoppix的Linux发行版,其主要用于Linux演示、光盘教学、系统急救,以及商业产品的演示,不需要硬盘安装,直接把CD/DVD上的image运行在一个可写的存储设备上(比如一个U盘上),其实,也就是把CD/DVD这个文件系统和USB这个可写的系统给联合mount起来,这样你对CD/DVD上的image做的任何改动都会在被应用在U盘上,于是乎,你可以对CD/DVD上的内容进行任意的修改,因为改动都在U盘上,所以你改不坏原来的东西。
我们可以再发挥一下想像力,你也可以把一个目录,比如你的源代码,作为一个只读的template,和另一个你的working directory给union在一起,然后你就可以做各种修改而不用害怕会把源代码改坏了。有点像一个ad hoc snapshot。
Docker把UnionFS的想像力发挥到了容器的镜像。你是否还记得我在介绍Linux Namespace上篇中用mount namespace和chroot山寨了一镜像。现在当你看过了这个UnionFS的技术后,你是不是就明白了,你完全可以用UnionFS这样的技术做出分层的镜像来。
下图来自Docker的官方文档Layer,其很好的展示了Docker用UnionFS搭建的分层镜像。
关于docker的分层镜像,除了aufs,docker还支持btrfs, devicemapper和vfs,你可以使用 -s 或 storage-driver= 选项来指定相关的镜像存储。在Ubuntu 14.04下,docker默认Ubuntu的 aufs(在CentOS7下,用的是devicemapper,关于devicemapper,我会以以后的文章中讲解)你可以在下面的目录中查看相关的每个层的镜像:
/var/lib/docker/aufs/diff/<id>
AUFS的一些特性
AUFS有所有Union FS的特性,把多个目录,合并成同一个目录,并可以为每个需要合并的目录指定相应的权限,实时的添加、删除、修改已经被mount好的目录。而且,他还能在多个可写的branch/dir间进行负载均衡。
上面的例子,我们已经看到AUFS的mount的示例了。下面我们来看一看被union的目录(分支)的相关权限:
rw表示可写可读read-write。
ro表示read-only,如果你不指权限,那么除了第一个外ro是默认值,对于ro分支,其永远不会收到写操作,也不会收到查找whiteout的操作。
rr表示real-read-only,与read-only不同的是,rr标记的是天生就是只读的分支,这样,AUFS可以提高性能,比如不再设置inotify来检查文件变动通知。
推荐学习:《docker视频教程》
以上がDocker でサポートされている最も古いストレージ エンジンは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

DockerとKubernetesの主な違いは、Dockerがコンテナ化に使用され、Kubernetesはコンテナオーケストレーションに使用されることです。 1.Dockerは、アプリケーションを開発、テスト、展開し、コンテナを介して分離とリソースの制限を実装するための一貫した環境を提供します。 2。Kubernetesは、コンテナ化されたアプリケーションを管理し、自動化された展開、拡張、管理機能を提供し、負荷分散と自動スケーリングをサポートします。この2つの組み合わせは、アプリケーションの展開と管理の効率を改善できます。

LinuxにDockerをインストールして構成するには、システムが64ビットとカーネルバージョン3.10以上であることを確認する必要があります。コマンド「Sudoapt-GetUpDate」を使用し、コマンド「Sudoapt-GetUpDate」でインストールし、「Sudoapt-GetUpDate」で検証します。 Dockerは、Linuxカーネルの名前空間とコントロールグループを使用して、コンテナの分離とリソースの制限を実現します。画像は読み取り専用テンプレートであり、コンテナを変更できます。使用法の例には、NGINXサーバーの実行やカスタムDockerFilesを使用した画像の作成が含まれます。一般

Dockerを使用する理由は、アプリケーションをパッケージ化、配布、および実行するための効率的でポータブルで一貫した環境を提供するからです。 1)Dockerは、開発者がアプリケーションとその依存関係を軽量のポータブルコンテナにパッケージ化できるようにするコンテナ化されたプラットフォームです。 2)Linuxコンテナテクノロジーとジョイントファイルシステムに基づいて、迅速な起動と効率的な操作を確保しています。 3)Dockerは、マルチステージの構造をサポートし、画像サイズと展開速度を最適化します。 4)Dockerを使用すると、開発と展開プロセスを簡素化し、効率を改善し、環境全体の一貫性を確保できます。

実際のプロジェクトのDockerのアプリケーションシナリオには、展開の簡素化、マルチコンテナーアプリケーションの管理、パフォーマンスの最適化が含まれます。 1.Dockerは、dockerfileを使用してnode.jsアプリケーションを展開するなど、アプリケーションの展開を簡素化します。 2。DockerComposeは、マイクロサービスアーキテクチャのWebやデータベースサービスなどのマルチコンテナーアプリケーションを管理しています。 3.パフォーマンス最適化は、マルチステージ構造を使用して画像サイズを縮小し、健康チェックを通じてコンテナのステータスを監視します。

小さなプロジェクトまたは開発環境でDockerを選択し、大規模なプロジェクトまたは生産環境でKubernetesを選択します。 1.ドッカーは、迅速な反復とテストに適しています。2。Kubernetesは、大規模なアプリケーションの管理と拡張に適した強力なコンテナオーケストレーション機能を提供します。

Linuxは、豊富なツールとコミュニティサポートを提供するネイティブプラットフォームであるため、LinuxでDockerが重要です。 1. docker:sudoapt-getupdateとsudoapt-getinstalldocker-cedocker-ce-clicotainerd.ioを使用します。 2。コンテナの作成と管理:Dockerrun-D-Namemynginx-P80:80NginxなどのDockerrunコマンドを使用します。 3。DockerFileを書き込み:画像サイズを最適化し、マルチステージ構造を使用します。 4。最適化とデバッグ:DockerLogsとDockerexを使用します

Dockerはコンテナ化ツールであり、Kubernetesはコンテナオーケストレーションツールです。 1. Dockerパッケージアプリケーションとその依存関係は、Docker対応環境で実行できるコンテナに依存します。 2。Kubernetesはこれらのコンテナを管理し、自動展開、スケーリング、管理を実装し、アプリケーションを効率的に実行します。

Dockerの目的は、アプリケーションの展開を簡素化し、コンテナ化技術を通じてさまざまな環境でアプリケーションが一貫して実行されるようにすることです。 1)Dockerは、アプリケーションと依存関係をコンテナにパッケージ化することにより、環境の違いの問題を解決します。 2)DockerFileを使用して画像を作成して、アプリケーションがどこでも一貫して実行されることを確認します。 3)Dockerの作業原則は画像とコンテナに基づいており、Linuxカーネルの名前空間とコントロールグループを使用して、分離とリソース管理を実現します。 4)基本的な使用法には、DockerHubからの画像の引き込みと実行が含まれます。高度な使用法には、DockerComposeを使用したマルチコンテナーアプリケーションの管理が含まれます。 5)画像構築の故障やコンテナの障害などの一般的なエラーは、ログやネットワーク構成を介してデバッグできます。 6)パフォーマンス最適化構造


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









