Docker がデータボリュームテクノロジーを要約して共有
この記事では、Docker によって共有されているデータ ボリューム テクノロジに関する関連知識をまとめて紹介します。
#Docker データ ボリューム テクノロジー
##コンテナ データ ボリュームとはDocker の概念レビュー
アプリケーションと環境をミラーにパッケージ化します。 ######データ?データがコンテナ内にある場合、コンテナを削除するとデータが失われます。要件: データを永続化できる
MySQL. コンテナを削除するとデータベースが削除されて暴走します ---> 要件: MySQL データをローカルに保存できること!
コンテナ間でデータ共有テクノロジが存在する可能性があります。 Dockerコンテナ内で生成されたデータはローカルに同期されます。
これがロールテクノロジーです!ディレクトリのマウント。コンテナ内のディレクトリを Linux× にマウントします。
概要: コンテナーの永続化と同期操作!コンテナ間でのデータ共有も可能!データ ボリュームの使用
docker run -it -v 宿主机目录: 容器目录 -p 主机端口:容器端口 容器id
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 コンテナ名
##テスト結果: 接続成功
発生した問題
最初に使用した mysql の最新バージョン: 8.0----navicat を使用して接続すると、常に不可解なエラーが報告されます
#名前付きマウントと匿名マウント
#匿名マウント ##- v コンテナー内のパス!
docker run -d --name nginx01 -v /etc/nginx nginx
ここで、これが匿名マウントであることがわかりました。-v の後にコンテナ内のパスを記述しただけで、コンテナの外のパスは記述しませんでした。すべての状況を表示するボリューム docker volume ls
-v マウントされたボリュームの名前: コンテナ内のパス
docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx nginx
ここでは、これが匿名マウントであることがわかります。-v の後にコンテナ内のパスを記述します。コンテナの外にはパスはありませんが、名前はあります #Docker のコンテンツ ディレクトリ:/var/lib/docker
Docker コンテナ内のすべてのボリュームは、ディレクトリが指定されていない場合、次の場所にあります:/var/lib/docker/volume /xx/_data
名前付きマウントを使用すると、ボリュームの 1 つを簡単に見つけることができます。ボリュームを使用するときに最も一般的に使用される方法は、名前付きマウントです。
追加知識
名前付きマウントと匿名マウントの区別方法、マウント先のパスを指定する方法
-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 ps -a
docker inspect 容器id
最后测试两个文件夹中是不是同步
同步成功
总结
使用dockerfile构建镜像的方式在我们未来的使用中非常的多,因为我们通常会构建自己的镜像
假设构建镜像时候没有挂载卷,要手动镜像挂载-v
数据卷容器
实际上即使保证的容器之间的数据共享的问题
数据卷容器实际上就是被拷贝数据的容器(A- volumes-from ->B,B是数据卷容器)
测试两个镜像之间同步
首先先开三个容器
创建docker01
创建docker02 --volumes-from docekr01
创建docker03 --volumes-from docekr02
查看docker01和docker03之间的数据共享
接着我们将docker02删除,查看docker01和docker03之间的数据共享
总结:
实现多个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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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をインストールし、デーモンを起動します。一般的な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 Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

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