Docker には 4 つのストレージ方法があります: 1. 「デフォルト ストレージ」、データは実行中のコンテナーに保存されます。コンテナーが削除されると、データも削除されます。2. 「ボリューム データ ボリューム」、3. 「bind mounts mount」、ホスト ファイル システム内の任意のディレクトリまたはファイルを直接マウントします。 4. 「tmpfs mount」。
このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker コンテナのいくつかのストレージ方法
コンテナのストレージは 2 つのカテゴリに分類できます:
1 つはミラーリングに関連しており、これは記事「Docker コンテナ テクノロジの基礎: ジョイント ファイル システム OverlayFS」で説明したコンテナ層の Copy-On-Write 機能です。デフォルトでは、コンテナ内で作成されたすべてのファイルは書き込み可能なコンテナ層に保存されます。コンテナ層にファイルを直接保存するこの方法では、ストレージ ドライバへの依存とホストへの直接書き込みの使用により、データの永続化と共有が困難になります。ファイル システム。この追加の抽象化により、データ ボリュームと比較してパフォーマンスが低下します。
もう 1 つはホスト ストレージで、ホスト ディレクトリをコンテナにバインドまたはハングすることで使用され、コンテナの停止後もデータを保持できます。主に後者を紹介します。
いくつかのストレージ マウント方法
ここでは、Docker ホスト上のデータが保存されるさまざまな場所に基づいて次の図を描きます。
##Docker には、デフォルト、ボリューム データ ボリューム、バインド マウント、および tmpfs マウント (Linux 環境でのみ利用可能) の 4 つのストレージ メソッドがあり、そのうち 2 つのボリュームとバインド マウントは永続的なコンテナ データを実装します。
データは実行中のコンテナに保存され、コンテナが削除されるとデータも削除されます
2. バインド マウントバインド マウントは、ボリュームと比較して機能が制限されています。バインド マウントを使用すると、ホスト上のファイルまたはディレクトリがコンテナにマウントされます。ファイルまたはディレクトリは、ホスト上のフルパスで参照されます。ディレクトリは Docker ホスト上に存在する必要はなく、存在しない場合は Docker が作成します。自動的に作成できるのはディレクトリのみであることに注意してください。 -v オプションを使用してディレクトリ/nginx/html をバインドしてマウントし、コンテナ内で確認します
docker run -dt -v /nginx/html:/usr/share/nginx/html --name nginx nginx
docker Inspection nginx
"Mounts": [ { "Type": "bind", "Source": "/nginx/html", "Destination": "/usr/share/nginx/html", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
を通じてコンテナの [マウント] フィールドを表示します次に、docker ホスト上にindex.html を作成し、hello nginx と書き込み、コンテナ IP にアクセスします。明らかにマウントが有効になっています。
[root@localhost ~]# echo "hello nginx" > /nginx/html/index.html [root@localhost ~]# curl 172.17.0.4 hello nginx
ここに問題があります。コンテナ内のファイルを有効にするために、Docker ホストを介してファイルを変更できます。逆も同様です。コンテナは、コンテナ上のコンテンツを変更、作成、削除できます。ホストファイルシステム。この問題に対処するには、コンテナの作成時にマウント ディレクトリのアクセス許可 (次の読み取り専用アクセス許可など) を構成できます:
docker run -dt -v /nginx/html:/usr/share/nginx/html:ro --name nginx nginx
したがって、バインド マウントを使用するときは、ホスト ファイル システムを操作することになります。 , 次のことを理解しておく必要があります:
他のアプリケーションへの影響を避けるために、マウントするディレクトリにはどのようなコンテンツが含まれているか。
コンテナにこれらのディレクトリを操作する権限が必要かどうか。
3.volumes データ ボリュームボリューム ストレージ ボリュームは Docker によって作成および管理されます。docker volume create コマンドを使用して明示的にボリュームを作成するか、またはコンテナボリュームが作成されます。 [root@localhost ~]# docker volume create nginx_volume
nginx_volume
[root@localhost volumes]# docker inspect nginx_volume
[
{
"CreatedAt": "2021-08-12T01:58:04-04:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/nginx_volume/_data",
"Name": "nginx_volume",
"Options": {},
"Scope": "local"
}
]
マウント ポイントが docker のルート ディレクトリ /var/lib/docker/volumes の下にあることがわかります。
docker volume rm/prune を使用して、未使用の 1 つまたはすべてのボリュームをクリアします。 docker コマンドを使用することは、バインド マウントよりも利点があります。
[root@localhost ~]# docker volume ls DRIVER VOLUME NAME local owncloud-docker-server_files local owncloud-docker-server_mysql local owncloud-docker-server_redis [root@localhost ~]# docker volume prune WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Volumes: owncloud-docker-server_files owncloud-docker-server_mysql owncloud-docker-server_redis Total reclaimed space: 199.4MB
コンテナを作成するときに、コンテナのマウント元が指定されていない場合、docker は自動的に匿名ボリュームを作成します。このボリュームも docker のルート ディレクトリに配置されます。
[root@localhost volumes]# docker run -dt -v /usr/share/nginx/html --name nginx_with_volume nginx d25bdfce9c7ac7bde5ae35067f6d9cf9f0cd2c9cbea6d1bbd7127b3949ef5ac6 [root@localhost volumes]# docker volume ls DRIVER VOLUME NAME local d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980 local nginx_volume [root@localhost volumes]# ls /var/lib/docker/volumes/ backingFsBlockDev d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980 metadata.db nginx_volume
マウント ボリュームを作成すると、現時点のストレージはバインド マウントと一致しますが、Docker ホストが特定のディレクトリまたはファイル構造を保証できない場合、ボリュームは Docker ホストの構成に役立ちます。コンテナー ランタイムから切り離されています。このようにして、ある Docker ホストから別の Docker ホストにデータをバックアップ、復元、または移行する必要がある場合、ボリュームは非常に便利であり、ホスト パスの制限から解放されます。
バインド マウントとボリュームを使用する場合は、次の伝播カバレッジの原則に注意する必要があります。
空のボリュームをマウントする場合: ディレクトリの内容コンテナがボリュームに伝播 (コピー) されます。マウントされたボリュームまたは空ではないボリュームをバインドする場合: コンテナ内のディレクトリの内容は、ボリュームまたはバインドされたホスト ディレクトリによって上書きされます。
tmpfs mount は Linux ホストにのみ適用できます。tmpfs mount を使用してコンテナを作成する場合、コンテナは書き込み可能な層に置くことができます。コンテナー外部でファイルを作成します。データをメモリに保持し、コンテナが停止すると、書き込まれたデータは削除されます。主に、ホストまたはコンテナーの書き込み可能レイヤーに残したくない機密ファイルを一時的に保存するために使用されます。 --tmpfs オプションを使用してメモリ ブロックをマウントします。
docker run -dt --name busybox_tmpfs --tmpfs /etc/running busybox
--mount メソッドにパラメータを入力して、一時ストレージのサイズを指定します。
docker run -dt --name busybox_tmpfs2 --mount type=tmpfs,tmpfs-size=2048,destination=/etc/running busybox
ストレージ データの共有
在容器之间共享数据主要有两种方法,第一种比较简单,只需要将目录或者volume挂载到多个容器中即可。这里不做赘述,我们来看一下通过中间容器实现共享的方式。 我们创建一个中间容器,包含绑定挂载目录和一个卷。 在我们需要共享的容器中通过选项--volumes-from拿过来用即可 我们inspect检查一下Mounts字段,此时container1已经挂载到了一个bind目录和一个volume 推荐学习:《docker视频教程》docker create -v /share:/volume1 -v /volume2 --name volume_share busybox
docker run -d -t --volumes-from volume_share --name container1 busybox
"Mounts": [
{
"Type": "bind",
"Source": "/share",
"Destination": "/volume1",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e",
"Source": "/var/lib/docker/volumes/21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e/_data",
"Destination": "/volume2",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
以上がDocker ストレージにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

LinuxでDockerを使用すると、開発と展開の効率が向上する可能性があります。 1。Dockerのインストール:スクリプトを使用して、ubuntuにDockerをインストールします。 2.インストールの確認:sudodockerrunhello-worldを実行します。 3。基本的な使用法:NginxコンテナDockerrun-Namemy-Nginx-P8080を作成します:80-Dnginx。 4。高度な使用法:カスタム画像を作成し、DockerFileを使用してビルドして実行します。 5。最適化とベストプラクティス:マルチステージビルドとドッケルコンポスを使用して、DockerFilesを作成するためのベストプラクティスに従ってください。

Docker監視の中核は、主にCPUの使用、メモリ使用、ネットワークトラフィック、ディスクI/Oなどのインジケーターを含む、コンテナの動作データを収集および分析することです。 Prometheus、Grafana、Cadvisorなどのツールを使用することにより、コンテナの包括的な監視とパフォーマンスの最適化を実現できます。

DockerSwarmは、スケーラブルで非常に利用可能なコンテナクラスターを構築するために使用できます。 1)dockerswarminitを使用して群れクラスターを初期化します。 2)swarmクラスターに参加して、dockerswarmjoinを使用します。 3)DockerServiceCreate-Namemy-Nginxを使用してサービスを作成します - Replicas3nginx。 4)dockerstackdeploy-cdocker-compose.ymlmyAppを使用して複雑なサービスを展開します。

DockerとKubernetesを使用して、エンタープライズアプリケーションのコンテナオーケストレーションを実行する方法は?次の手順で実装します。Dockerイメージを作成し、DockerHubにプッシュします。 Kubernetesで展開とサービスを作成して、アプリケーションを展開します。 Ingressを使用して外部アクセスを管理します。パフォーマンスの最適化と、マルチステージの構築やリソースの制約などのベストプラクティスを適用します。

Docker FAQは、次の手順で診断および解決できます。1。コンテナのステータスとログを表示、2。ネットワーク構成を確認します。これらの方法により、Dockerの問題を迅速に配置して固定し、システムの安定性とパフォーマンスを向上させることができます。

Dockerは、DevOpsエンジニアにとって必須のスキルです。 1.Dockerは、アプリケーションとその依存関係をコンテナにパッケージ化することにより、分離と移植性を実現するオープンソースのコンテナ化されたプラットフォームです。 2. Dockerは、名前空間、コントロールグループ、フェデレーションファイルシステムで動作します。 3。基本的な使用には、コンテナの作成、実行、管理が含まれます。 4.高度な使用法には、DockerComposeを使用してマルチコンテナーアプリケーションを管理することが含まれます。 5.一般的なエラーには、コンテナ障害、ポートマッピングの問題、データの持続性の問題が含まれます。デバッグスキルには、ログの表示、コンテナの入り、および詳細情報の表示が含まれます。 6.パフォーマンスの最適化とベストプラクティスには、画像の最適化、リソースの制約、ネットワーク最適化、DockerFileを使用するためのベストプラクティスが含まれます。

Dockerセキュリティの強化方法は次のとおりです。1。-cap-dropパラメーターを使用してLinux機能を制限します。2。読み取り専用コンテナを作成します。これらの戦略は、脆弱性の露出を減らし、攻撃者の機能を制限することにより、コンテナを保護します。

Dockervolumeは、コンテナを再起動、削除、または移行すると、データが安全であることが保証されます。 1。ボリュームの作成:Dockervolumecreatemydata。 2。コンテナとマウントボリュームを実行します:Dockerrun-It-Vmydata:/app/dataubuntubash。 3.高度な使用には、データ共有とバックアップが含まれます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
