検索
ホームページ運用・保守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 までご連絡ください。
Docker:開発と運用の合理化Docker:開発と運用の合理化May 13, 2025 am 12:16 AM

Dockerが開発と運用およびメンテナンスプロセスを簡素化できる方法には、次のものが含まれます。1)さまざまな環境でアプリケーションが一貫して実行されることを保証するための一貫した環境を提供する。 2)DockerFileと画像構築を介したアプリケーションの展開を最適化する。 3)DockerComposeを使用して複数のサービスを管理します。 Dockerはコンテナ化テクノロジーを通じてこれらの機能を実装していますが、使用中は、画像構造、コンテナの起動、ネットワーク構成などの一般的な問題に注意を払い、画像の最適化とリソース管理を通じてパフォーマンスを改善する必要があります。

Kubernetes vs. Docker:関係を理解するKubernetes vs. Docker:関係を理解するMay 12, 2025 am 12:16 AM

DockerとKubernetesの関係は次のとおりです。Dockerはアプリケーションのパッケージ化に使用され、Kubernetesはコンテナの調整と管理に使用されます。 1.Dockerは、コンテナテクノロジーを通じてアプリケーションのパッケージと配布を簡素化します。 2。Kubernetesは、高可用性とスケーラビリティを確保するためにコンテナを管理します。それらは、アプリケーションの展開と管理の効率を改善するために組み合わせて使用​​されます。

Docker:コンテナ革命とその影響Docker:コンテナ革命とその影響May 10, 2025 am 12:17 AM

Dockerは、コンテナテクノロジーを通じてさまざまな環境で実行されるソフトウェアの一貫性の問題を解決します。その開発史は、2013年から現在までのクラウドコンピューティングエコシステムの進化を促進しました。 DockerはLinuxカーネルテクノロジーを使用して、プロセスの分離とリソースの制限を実現し、アプリケーションの携帯性を向上させます。開発と展開において、Dockerはリソースの使用率と展開速度を向上させ、DevOpsとMicroserviceアーキテクチャをサポートしますが、画像管理、セキュリティ、コンテナオーケストレーションの課題にも直面しています。

Docker vs.仮想マシン:比較Docker vs.仮想マシン:比較May 09, 2025 am 12:19 AM

Dockerおよび仮想マシンには独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.ドッカーは軽量で高速で、マイクロサービスとCI/CD、高速スタートアップ、低リソースの利用に適しています。 2.仮想マシンは、高い隔離と多型のシステムサポートを提供しますが、多くのリソースと遅い起動を消費します。

Dockerのアーキテクチャ:コンテナと画像の理解Dockerのアーキテクチャ:コンテナと画像の理解May 08, 2025 am 12:17 AM

Dockerアーキテクチャのコアコンセプトはコンテナとミラーです。1。ミラーは、アプリケーションとその依存関係を含むコンテナの青写真です。 2。コンテナは画像のインスタンスを実行しており、画像に基づいて作成されます。 3.ミラーは複数の読み取り専用レイヤーで構成され、コンテナが実行されているときに書き込み可能なレイヤーが追加されます。 4. Linuxネームスペースとコントロールグループを介してリソースの分離と管理を実装します。

Dockerの力:コンテナ化が説明しましたDockerの力:コンテナ化が説明しましたMay 07, 2025 am 12:07 AM

Dockerは、コンテナ化テクノロジーを介したアプリケーションの建設、展開、および運用を簡素化します。 1)Dockerは、コンテナテクノロジーを使用してアプリケーションとその依存関係をパッケージ化するオープンソースプラットフォームです。 2)ミラーと容器はDockerの中核です。ミラーはアプリケーションの実行可能パッケージであり、コンテナは画像の実行インスタンスです。 3)Dockerの基本的な使用法は、NGINXサーバーを実行するようなものであり、高度な使用法は、DockerComposeを使用してマルチコンテナーアプリケーションを管理するようなものです。 4)一般的なエラーには、画像のダウンロード障害とコンテナの起動の失敗が含まれ、デバッグスキルにはログの表示とポートのチェックが含まれます。 5)パフォーマンスの最適化とベストプラクティスには、ミラーの最適化、リソース管理、セキュリティの改善が含まれます。

KubernetesとDocker:コンテナ化されたアプリの展開と管理KubernetesとDocker:コンテナ化されたアプリの展開と管理May 06, 2025 am 12:13 AM

KubernetesとDockerを使用してコンテナ化されたアプリケーションを展開する手順には次のものがあります。1。Docker画像を作成し、DockerFileを使用してアプリケーション画像を定義し、DockerHubにプッシュします。 2. Kubernetesで展開とサービスを作成して、アプリケーションを管理および公開します。 3. horizo​​ntalpodautoscalerを使用して、動的なスケーリングを実現します。 4. Kubectlコマンドを介して一般的な問題をデバッグします。 5.パフォーマンスを最適化し、リソースの制限とリクエストを定義し、ヘルムを使用して構成を管理します。

Docker:コンテナ化技術の紹介Docker:コンテナ化技術の紹介May 05, 2025 am 12:11 AM

Dockerは、アプリケーションを開発、パッケージ化、および実行するためのオープンソースプラットフォームであり、コンテナ化テクノロジーを通じて、さまざまな環境でのアプリケーションの一貫性を解決します。 1.画像の作成:DockerFileを介してアプリケーション環境と依存関係を定義し、DockerBuildコマンドを使用してビルドします。 2。コンテナの実行:Dockerrunコマンドを使用して、鏡からコンテナを起動します。 3.コンテナの管理:Dockerps、Dockerstop、Dockerrm、その他のコマンドを介してコンテナライフサイクルを管理します。

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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

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

DVWA

DVWA

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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