検索
ホームページ運用・保守DockerDocker ストレージにはどのような方法がありますか?

Docker には 4 つのストレージ方法があります: 1. 「デフォルト ストレージ」、データは実行中のコンテナーに保存されます。コンテナーが削除されると、データも削除されます。2. 「ボリューム データ ボリューム」、3. 「bind mounts mount」、ホスト ファイル システム内の任意のディレクトリまたはファイルを直接マウントします。 4. 「tmpfs mount」。

Docker ストレージにはどのような方法がありますか?

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Docker コンテナのいくつかのストレージ方法

コンテナのストレージは 2 つのカテゴリに分類できます:

1 つはミラーリングに関連しており、これは記事「Docker コンテナ テクノロジの基礎: ジョイント ファイル システム OverlayFS」で説明したコンテナ層の Copy-On-Write 機能です。デフォルトでは、コンテナ内で作成されたすべてのファイルは書き込み可能なコンテナ層に保存されます。コンテナ層にファイルを直接保存するこの方法では、ストレージ ドライバへの依存とホストへの直接書き込みの使用により、データの永続化と共有が困難になります。ファイル システム。この追加の抽象化により、データ ボリュームと比較してパフォーマンスが低下します。

もう 1 つはホスト ストレージで、ホスト ディレクトリをコンテナにバインドまたはハングすることで使用され、コンテナの停止後もデータを保持できます。主に後者を紹介します。

いくつかのストレージ マウント方法

ここでは、Docker ホスト上のデータが保存されるさまざまな場所に基づいて次の図を描きます。

##Docker には、デフォルト、ボリューム データ ボリューム、バインド マウント、および tmpfs マウント (Linux 環境でのみ利用可能) の 4 つのストレージ メソッドがあり、そのうち 2 つのボリュームとバインド マウントは永続的なコンテナ データを実装します。 Docker ストレージにはどのような方法がありますか?

#1. デフォルトのストレージ

データは実行中のコンテナに保存され、コンテナが削除されるとデータも削除されます

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 ホストにデータをバックアップ、復元、または移行する必要がある場合、ボリュームは非常に便利であり、ホスト パスの制限から解放されます。

バインド マウントとボリュームを使用する場合は、次の伝播カバレッジの原則に注意する必要があります。

空のボリュームをマウントする場合: ディレクトリの内容コンテナがボリュームに伝播 (コピー) されます。

Docker ストレージにはどのような方法がありますか?マウントされたボリュームまたは空ではないボリュームをバインドする場合: コンテナ内のディレクトリの内容は、ボリュームまたはバインドされたホスト ディレクトリによって上書きされます。

4.tmpfs mount

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挂载到多个容器中即可。这里不做赘述,我们来看一下通过中间容器实现共享的方式。

我们创建一个中间容器,包含绑定挂载目录和一个卷。

docker create -v /share:/volume1 -v /volume2  --name volume_share  busybox

在我们需要共享的容器中通过选项--volumes-from拿过来用即可

docker run -d -t --volumes-from volume_share  --name container1  busybox

我们inspect检查一下Mounts字段,此时container1已经挂载到了一个bind目录和一个volume

"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视频教程

以上がDocker ストレージにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
LinuxでDockerを使用:包括的なガイドLinuxでDockerを使用:包括的なガイドApr 12, 2025 am 12:07 AM

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

Docker監視:メトリックの収集とコンテナの健康の追跡Docker監視:メトリックの収集とコンテナの健康の追跡Apr 10, 2025 am 09:39 AM

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

Docker Swarm:スケーラブルで回復力のあるコンテナクラスターの構築Docker Swarm:スケーラブルで回復力のあるコンテナクラスターの構築Apr 09, 2025 am 12:11 AM

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

Kubernetesを備えたDocker:エンタープライズアプリケーション用のコンテナオーケストレーションKubernetesを備えたDocker:エンタープライズアプリケーション用のコンテナオーケストレーションApr 08, 2025 am 12:07 AM

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

Dockerのトラブルシューティング:一般的な問題の診断と解決Dockerのトラブルシューティング:一般的な問題の診断と解決Apr 07, 2025 am 12:15 AM

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

Dockerインタビューの質問:DevOpsエンジニアリングインタビューをエースDockerインタビューの質問:DevOpsエンジニアリングインタビューをエースApr 06, 2025 am 12:01 AM

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

Dockerセキュリティ硬化:容量から容器を保護しますDockerセキュリティ硬化:容量から容器を保護しますApr 05, 2025 am 12:08 AM

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

Dockerボリューム:コンテナ内の永続的なデータの管理Dockerボリューム:コンテナ内の永続的なデータの管理Apr 04, 2025 am 12:19 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

DVWA

DVWA

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

MinGW - Minimalist GNU for Windows

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

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

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