ホームページ 運用・保守 Docker Docker がデータボリュームテクノロジーを要約して共有

Docker がデータボリュームテクノロジーを要約して共有

Jan 14, 2022 pm 06:44 PM
docker

この記事では、Docker によって共有されているデータ ボリューム テクノロジに関する関連知識をまとめて紹介します。

Docker がデータボリュームテクノロジーを要約して共有

#Docker データ ボリューム テクノロジー

Docker がデータボリュームテクノロジーを要約して共有

##コンテナ データ ボリュームとはDocker の概念レビュー

アプリケーションと環境をミラーにパッケージ化します。 ######データ?データがコンテナ内にある場合、コンテナを削除するとデータが失われます。要件: データを永続化できる

MySQL. コンテナを削除するとデータベースが削除されて暴走します ---> 要件: MySQL データをローカルに保存できること!

コンテナ間でデータ共有テクノロジが存在する可能性があります。 Dockerコンテナ内で生成されたデータはローカルに同期されます。

これがロールテクノロジーです!ディレクトリのマウント。コンテナ内のディレクトリを Linux× にマウントします。

概要: コンテナーの永続化と同期操作!コンテナ間でのデータ共有も可能!

Docker がデータボリュームテクノロジーを要約して共有

データ ボリュームの使用

docker run -it -v 宿主机目录: 容器目录 -p 主机端口:容器端口 容器id
ログイン後にコピー
実践的な演習検査して同期の詳細を表示

コンテナ内にファイルを作成し、それがローカル フォルダに同期されているかどうかを確認します。

Docker がデータボリュームテクノロジーを要約して共有

コンテナが閉じたら、ローカル ファイルを変更して、変更 ファイルはコンテナに同期されますか?

Docker がデータボリュームテクノロジーを要約して共有

Docker がデータボリュームテクノロジーを要約して共有Mysql の実戦

コマンド

docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
ログイン後にコピー
パラメータ

-d バックグラウンド操作

-p ポートマッピング

-v データボリュームのマウント: データの同期

-e 環境変数の設定: MySQL ログイン パスワードはここに設定されます

--name コンテナ名

##テスト結果: 接続成功

Docker がデータボリュームテクノロジーを要約して共有

発生した問題

最初に使用した mysql の最新バージョン: 8.0----navicat を使用して接続すると、常に不可解なエラーが報告されますDocker がデータボリュームテクノロジーを要約して共有

解決策: バージョン 5.7 に切り替えます。問題ありません。

ミラー mysql を実行するとき、パスワードを設定するために -e MYSQL_ROOT_PASSWORD=123456 を追加しません。コンテナは再起動されても常に閉じられます。オンになります

-e MYSQL_ROOT_PASSWORD=123456 パラメータを追加して完全にオンにします

コンテナを削除しても、ローカルにマウントしたデータ ボリュームは失われません。これにより、コンテナ データの永続化機能が実現されます。

#名前付きマウントと匿名マウント

#匿名マウント ##- v コンテナー内のパス!

docker run -d --name nginx01 -v /etc/nginx nginx
ログイン後にコピー

ここで、これが匿名マウントであることがわかりました。-v の後にコンテナ内のパスを記述しただけで、コンテナの外のパスは記述しませんでした。すべての状況を表示するボリューム

docker volume ls
ログイン後にコピー

Named mount

Docker がデータボリュームテクノロジーを要約して共有-v マウントされたボリュームの名前: コンテナ内のパス

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx nginx
ログイン後にコピー

ここでは、これが匿名マウントであることがわかります。-v の後にコンテナ内のパスを記述します。コンテナの外にはパスはありませんが、名前はあります #Docker のコンテンツ ディレクトリ:/var/lib/docker

Docker コンテナ内のすべてのボリュームは、ディレクトリが指定されていない場合、次の場所にあります:/var/lib/docker/volume /xx/_data

名前付きマウントを使用すると、ボリュームの 1 つを簡単に見つけることができます。ボリュームを使用するときに最も一般的に使用される方法は、名前付きマウントです。

Docker がデータボリュームテクノロジーを要約して共有

追加知識

名前付きマウントと匿名マウントの区別方法、マウント先のパスを指定する方法Docker がデータボリュームテクノロジーを要約して共有

-v コンテナ内のパス # 匿名マウント

-v ボリューム名: コンテナ内のパス #Named mount-v /コンテナ外のパス: コンテナ内のパス #パスを指定 mount

Extension

-vコンテナ内のパス: ro rw 読み取りおよび書き込み権限の変更

ro readonly 読み取り専用

rw readwrite 読み取り可能および書き込み可能

一旦设置了这个容器权限,容器对我们挂载出来的内容就有限定了

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:ro nginx
docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx:rw nginx
ログイン後にコピー

Ro 只要看到ro就说明这个路径只能通过宿主机来进行操作,容器内是无法操作的!

初识Dockerfile

dockerfile

dockerfile就是用来构建docker镜像文件的!命令脚本!先体验一下

通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!

写一个dockerfile

# 创立一个dockerfile文件,名字可以随便的取,最好叫做dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volme01","volume02"]
CMD echo "--------end----------"
CMD /bin/bash
#这里每个指令就是镜像的一层
ログイン後にコピー

使用dockerfile生成镜像

docker build -f dockerfile文件位置 -t 镜像名称和版本 镜像生成的位置
ログイン後にコピー

Docker がデータボリュームテクノロジーを要約して共有

进入镜像查看详情

Docker がデータボリュームテクノロジーを要約して共有

查看卷的同步目录

docker ps -a

docker inspect 容器id

Docker がデータボリュームテクノロジーを要約して共有

最后测试两个文件夹中是不是同步

同步成功

总结

使用dockerfile构建镜像的方式在我们未来的使用中非常的多,因为我们通常会构建自己的镜像

假设构建镜像时候没有挂载卷,要手动镜像挂载-v

数据卷容器

实际上即使保证的容器之间的数据共享的问题

Docker がデータボリュームテクノロジーを要約して共有

数据卷容器实际上就是被拷贝数据的容器(A- volumes-from ->B,B是数据卷容器)

测试两个镜像之间同步

首先先开三个容器

创建docker01

Docker がデータボリュームテクノロジーを要約して共有

创建docker02 --volumes-from docekr01

Docker がデータボリュームテクノロジーを要約して共有

创建docker03 --volumes-from docekr02

Docker がデータボリュームテクノロジーを要約して共有

查看docker01和docker03之间的数据共享

Docker がデータボリュームテクノロジーを要約して共有

接着我们将docker02删除,查看docker01和docker03之间的数据共享

Docker がデータボリュームテクノロジーを要約して共有

总结:

Docker がデータボリュームテクノロジーを要約して共有

实现多个mysql之间的数据共享

  docker run -d -p 3310:3306 -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
  docker run -d -p 3310:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=123456 --name 
  mysql02 mysql:5.7
ログイン後にコピー

总结:

容器之间配置信息的传递。数据卷容器的声明周期一直持续到没有容器使用位置

理解:容器之间只要是共享就会数据copy,即使有的容器被删除,数据依然存在,直到所有共享 的容器都删除,数据才会被彻底删除

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的。

推荐学习:《docker视频教程

以上がDocker がデータボリュームテクノロジーを要約して共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

中国のDocker画像ソースを変更する方法 中国のDocker画像ソースを変更する方法 Apr 15, 2025 am 11:30 AM

国内のミラーソースに切り替えることができます。手順は次のとおりです。1。構成ファイル/etc/docker/daemon.jsonを編集し、ミラーソースアドレスを追加します。 2。保存して終了した後、Docker Service Sudo SystemCtlを再起動してDockerを再起動して、画像のダウンロード速度と安定性を改善します。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

Dockerバージョンを読む方法 Dockerバージョンを読む方法 Apr 15, 2025 am 11:51 AM

Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

docker lnmpの呼び方 docker lnmpの呼び方 Apr 15, 2025 am 11:15 AM

Docker LNMPコンテナコールステップ:コンテナの実行:Docker Run -D - Name LNMP -Container -P 80:80 -P 443:443 LNMPスタックコンテナIPを取得する:Docker Inspect LNMP -Container | GREP iPaddress Access Webサイト:http://< container ip>/index.phpsshアクセス:docker exec -it lnmp -container bash access mysql:mysql -u roo

Dockerコマンドの実行方法 Dockerコマンドの実行方法 Apr 15, 2025 am 11:24 AM

Dockerコマンドを実行する方法は? Dockerをインストールし、デーモンを起動します。一般的なDockerコマンド:Docker画像:表示画像の表示Docker PS:ディスプレイコンテナDocker run:run docker docker stop:Stop Container docker RM RM:Delete container container containerとcontainerとdocker exec:execute command docker adtach:adticle console docker logs:ディスプレイログドッカーのコミット:ミラー停止停止dock

Docker画像を保存する方法 Docker画像を保存する方法 Apr 15, 2025 am 11:54 AM

Dockerに画像を保存するには、Docker Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

See all articles