ホームページ  >  記事  >  運用・保守  >  Docker データ ボリュームの整理に関する最も詳細なチュートリアル

Docker データ ボリュームの整理に関する最も詳細なチュートリアル

WBOY
WBOY転載
2022-02-23 17:32:252024ブラウズ

この記事では、docker のデータ ボリュームに関する関連知識を提供します。データ ボリュームは、コンテナ間でデータを共有または再利用できます。データ ボリュームの変更は、イメージの更新には含まれません。みんなを助けます。

Docker データ ボリュームの整理に関する最も詳細なチュートリアル

推奨学習: 「docker ビデオ チュートリアル

データ ボリュームとは

使用docker コンテナが作成されると、一連のデータ ファイルが生成されます。これらのデータ ファイルは、docker コンテナが削除されると消えますが、生成されたコンテンツの一部は他の目的に保存されることが期待されます。Docker は環境を適用して実行しますプログラマーは、パッケージ化されてコンテナーにリリースされると、実行プロセス中に生成されるデータの一部が保持されることを期待し、コンテナー間でデータを共有できることを期待します。

一般的に、Docker コンテナーのデータ ボリュームは、一般的に使用される USB ディスクとみなすことができます。これは 1 つ以上のコンテナーに存在し、Docker によってコンテナーにマウントされますが、共同ファイル システムには属しません。コンテナを削除すると、コンテナにマウントされているデータ ボリュームも削除されます。

データ ボリュームの機能

データ ボリュームはコンテナ間でデータを共有または再利用できます

データ ボリュームの変更はすぐに有効になります

データ ボリュームの変更は、イメージの更新には含まれません

#データ ボリュームは、コンテナーが削除された場合でも、デフォルトで常に存在します

#データ ボリュームのライフ サイクルは、コンテナーが使用しない限り継続します

コンテナ内のデータ管理

データ ボリューム: データ ボリューム コンテナ内のデータはローカル ホスト環境に直接マッピングされます

データ ボリューム コンテナ:データ ボリューム コンテナ特定のコンテナを使用して、データ ボリュームを維持する

Docker で一般的に使用されるコマンド cp

Syntax

ホスト ファイルをコンテナにコピーする

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

コンテナ内のファイルをホストにコピーする

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

共通パラメータ

##-L: ソースターゲットにリンクを保持します

基本的な使用

ホストファイルをコンテナにコピーします

docker cp /data/index.html nginx:/usr/share/nginx/html/index.html

コンテナ内のファイルをホストにコピーします

docker cp nginx:/etc/nginx/nginx.conf /data

docker data volume

データ ボリューム (データ ボリューム) は、1 つ以上のコンテナで使用できる特別なディレクトリであり、ホストをマップします。オペレーティング システム ディレクトリをコンテナに直接コピーします。

データ ボリュームに関する注意事項

データ ボリュームをマウントするには、create/start ではなく run で起動コンテナを作成することをお勧めします。起動コンテナを作成します。データボリュームを再度マウントするのは非常に面倒で、多くの設定ファイルを変更する必要がありますが、不可能ではありません。

Docker 公式 Web サイトでは、ファイルをマウントするのではなく、可能な限りディレクトリをマウントすることを推奨しています

データ ボリューム タイプ

ホスト データ ボリューム: ホスト上に直接ファイル システムですが、コンテナーはアクセスできます (バインド マウント)

名前付きデータ ボリューム: ディスク上で Docker によって管理されるデータ ボリュームですが、このボリュームには名前があります。

匿名データ ボリューム: ディスク上で Docker によって管理されるデータ ボリューム。名前がないため見つけるのは簡単ではありません。これらのファイルは Docker によって管理されます。

ホスト データ ボリューム

バインド マウント: コンテナ内のデータは、一部の重要なシステム ディレクトリやファイルの中間を含め、ホスト ファイル システムの任意の場所に保存されます。 docker 以外のプロセスでも任意に変更できます。

バインド マウントを使用する場合、ホスト ディレクトリまたはファイルはコンテナーにマウントされます。コンテナーは、マウントするディレクトリまたはファイルの絶対パスに従って、ホストのデータを使用または変更します。ホスト内にディレクトリやファイルが事前に存在している必要はなく、必要に応じて自動的に作成されます。

バインド マウントの使用はパフォーマンスの点で非常に優れていますが、適切に構造化されたファイル システムを備えたホストに依存します。

バインド マウントを使用するコンテナは、重要なシステム ファイルやディレクトリの作成、変更、削除など、コンテナ内のプロセスを通じてホスト ファイル システムを変更できます。この機能は非常に強力ですが、明らかにセキュリティ上の問題も引き起こします。ホスト上の Docker 以外のプロセスへの影響を含む側面への影響

Notes

空のデータ ボリュームをコンテナ内の空ではないディレクトリにマウントする場合、このディレクトリ ファイルはデータ ボリュームにコピーされます。

空ではないデータ ボリュームをコンテナ内のディレクトリにマウントすると、コンテナ内のディレクトリにはデータ ボリューム内のデータが表示されます。元のコンテナー内のディレクトリにデータがある場合、元のデータは非表示になります

基本的な使用法

構文

docker run -v /宿主机绝对路径目录:/容器内目录 镜像名

基本的な使用法

docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin
-v /data/mysql:/var/lib/mysql mysql:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci

コンテナー ディレクトリのアクセス許可

コンテナ内のパスに -v を渡します: ro rw 読み取りおよび書き込み権限を変更します ro:readonly read-only

rw:readwrite readable and writable

docker run - it -v / ホストの絶対パス ディレクトリ:/コンテナ ディレクトリ:ro イメージ名

docker run -it -v/ホストの絶対パス ディレクトリ:/コンテナ ディレクトリ:rw イメージ名

例:

docker run -d -P --name nginx05 -v nginx1:/etc/nginx:ro nginx
docker run -d -P --name nginx05 -v nginx2:/etc/nginx:rw nginx

ro ro が表示されている限り、このパスはホスト経由でのみ操作でき、コンテナー内では操作できないことを意味します!

名前付きデータ ボリューム

基本的な使用方法

docker run -itd --name nginx -p 80:80 -v lagouedu-nginx:/etc/nginx nginx:1.19.3-

alpine

docker データ ボリュームの表示 docker volume ls

laguedu-nginx ホスト ディレクトリの表示

docker volume inspect lagouedu-nginx

Docker データ ボリュームのデフォルト ディレクトリを入力します

cd /var/lib/docker/volumes/lagouedu-nginx

View files

ls

Docker のすべてのファイルはデフォルトで _data ディレクトリに保存されます cd _data

Delete容器###
docker rm $(docker stop $(docker ps -aq))

查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在

ls

匿名数据卷

基本使用

docker run -itd --name nginx -p 80:80 -v /etc/nginx nginx:1.19.3-alpine 查看docker数据卷
docker volume ls

查看宿主机目录

docker volume inspect dbd07daa4e40148b11....

进入docker数据卷默认目录

cd /var/lib/docker/volumes/dbd07daa4e40148b11....

查看文件

ls

所有的文件docker默认保存在_data目录中 cd _data

删除容器

docker rm $(docker stop $(docker ps -aq))

查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在

ls

数据卷容器

run命令

常用参数

--volumes-from

如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器

也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。

发现创建好的数据卷容器是处于停止运行的状态,因为使用 —volumes-from 参数所挂载数据卷的容器 自己并不需要保持在运行状态。

Docker データ ボリュームの整理に関する最も詳細なチュートリアル

基本使用

docker run -d --name data-volume -v /data/nginx:/usr/share/nginx/html -v
/data/mysql:/var/lib/mysql centos:7.8.2003
docker run -itd --name nginx01 -p 80:80 --volumes-from data-volume nginx:1.19.3-
alpine
echo "nginx" > /data/nginx/index.html
http://192.168.198.100
docker run -itd --name nginx02 -p 81:80 --volumes-from data-volume nginx:1.19.3-
alpine
http://192.168.198.100:81
docker run -itd --name mysql01 --restart always --privileged=true -p 3306:3306
 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 --
character-set-server=utf8 --collation-server=utf8_general_ci
docker run -itd --name mysql02 --restart always --privileged=true -p 3307:3306
 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 --
character-set-server=utf8 --collation-server=utf8_general_ci

推荐学习:《docker视频教程

以上がDocker データ ボリュームの整理に関する最も詳細なチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。