首頁 運維 Docker Docker總結分享之資料卷技術

Docker總結分享之資料卷技術

Jan 14, 2022 pm 06:44 PM
docker

這篇文章為大家帶來了Docker總結分享之資料卷技術的相關知識,希望對大家有幫助。

Docker總結分享之資料卷技術

Docker資料卷技術

Docker總結分享之資料卷技術

什麼是容器資料卷

Docker總結分享之資料卷技術

#docker的概念回顧

將應和環境打包成一個映像!

資料?如果資料都在容器中,那麼我們容器刪除,資料就會遺失!需求:資料可以持久化MySQL,容器刪了,刪庫跑路--->需求:MySQL資料可以儲存在本地!

容器之間可以有一個資料共享的技術! Docker容器中產生的數據,同步到本地!

這就是磁碟區技術!目錄的掛載,將我們容器內的目錄,掛載到Linu×上面!

Docker總結分享之資料卷技術

總結:容器的持久化和同步操作!容器間也是可以實現資料共享的!

Docker總結分享之資料卷技術使用資料卷

docker run -it -v 宿主机目录: 容器目录 -p 主机端口:容器端口 容器id
登入後複製

實戰演練Docker總結分享之資料卷技術

inspect查看同步詳細資料

在容器中建立一個文件,看是否同步到本機資料夾

#在關閉容器的情況下,對本機文件進行修改,看修改的是不是會同步到容器中檔案

#Mysql實戰

Docker總結分享之資料卷技術#

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 後台運行

Docker總結分享之資料卷技術-p 連接埠對映

-v 資料卷掛載:同步資料

-e  設定環境變數:這裡時設定的時MySQL的登陸密碼

--name  容器起名字

測試結果:連線成功

遇到的問題首先使用的時mysql的最新版本:8.0----在使用navicat進行連接的時候,總是報莫名其妙的錯誤

#解決方式:換成5.7版本,沒有任何問題在我們run鏡像mysql的時候,沒有加上-e MYSQL_ROOT_PASSWORD=123456進行密碼的設置,容器一直會處於關閉狀態,即使重新start也不會開啟加上-e MYSQL_ROOT_PASSWORD=123456這個參數完美開啟

#即使我們將容器刪除,我們掛載到本地的資料卷依舊沒有遺失,這就實現了容器資料的持久化功能

具名掛載與匿名掛載

Docker總結分享之資料卷技術

#匿名掛載

-v 容器內的路徑!

docker run -d --name nginx01 -v /etc/nginx nginx
登入後複製

這裡我們發現,這種就是匿名掛載,我們在-v的後面只是寫上了容器內的路徑,沒有寫容器外的路徑

查看所有捲的情況

docker volume ls
登入後複製
Docker總結分享之資料卷技術

具名掛載

Docker總結分享之資料卷技術#-v 掛載磁碟區的名稱:容器內的路徑

docker run -d --name nginx01 -v 具名挂在名称:/etc/nginx nginx
登入後複製

這裡我們發現,這種就是匿名掛載,我們在-v的後面既寫上了容器內的路徑,沒有容器外的路徑,但是有一個名稱

docker的內容目錄:/var/lib/docker

所有的docker容器內的捲,沒有指定目錄的情況下都是在:/var/lib/docker/volume /xx/_data

我們可以透過具名掛載方便的找到我們的一個卷,並且在使用卷的時候最多的使用方式就是具名掛載

額外知識

如何區分時具名掛載或匿名掛載,指定路徑掛載

###-v 容器內路徑    #匿名掛載######-v 磁碟區名:容​​器內路徑    #具名掛載#######-v /容器外路徑:容器內路徑    #指定路徑掛載#######擴充## #####-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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker怎麼退出容器 docker怎麼退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

docker內的文件怎麼拷貝到外面 docker內的文件怎麼拷貝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

docker怎麼重啟 docker怎麼重啟 Apr 15, 2025 pm 12:06 PM

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker怎麼更新鏡像 docker怎麼更新鏡像 Apr 15, 2025 pm 12:03 PM

更新 Docker 鏡像的步驟如下:拉取最新鏡像標記新鏡像為特定標籤刪除舊鏡像(可選)重新啟動容器(如果需要)

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

See all articles