站長資訊網
        最全最豐富的資訊網站

        Docker總結分享之數據卷技術

        本篇文章給大家帶來了Docker總結分享之數據卷技術的相關知識,希望對大家有幫助。

        Docker總結分享之數據卷技術

        Docker數據卷技術

        Docker總結分享之數據卷技術

        什么是容器數據卷

        docker的理念回顧

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

        數據?如果數據都在容器中,那么我們容器刪除,數據就會丟失!需求:數據可以持久化

        MySQL,容器刪了,刪庫跑路—>需求:MySQL數據可以存儲在本地!

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

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

        Docker總結分享之數據卷技術

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

        使用數據卷

        docker run -it -v 宿主機目錄: 容器目錄 -p 主機端口:容器端口 容器id

        實戰演練

        inspect查看同步詳細信息

        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總結分享之數據卷技術

        測試結果:連接成功

        Docker總結分享之數據卷技術

        遇到的問題

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

        解決方式:換成5.7版本,沒有任何問題

        在我們run鏡像mysql的時候,沒有加上-e MYSQL_ROOT_PASSWORD=123456進行密碼的設置,容器一直會處于關閉狀態,即使重新start也不會開啟

        加上-e MYSQL_ROOT_PASSWORD=123456這個參數完美開啟

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

        具名掛載和匿名掛載

        匿名掛載

        -v 容器內的路徑!

        docker run -d --name nginx01 -v /etc/nginx nginx

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

        查看所有卷的情況

        docker volume ls

        Docker總結分享之數據卷技術

        具名掛載

        -v 掛載卷的名稱:容器內的路徑

        docker run -d --name nginx01 -v 具名掛在名稱:/etc/nginx nginx

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

        Docker總結分享之數據卷技術

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

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

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

        Docker總結分享之數據卷技術

        額外知識

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

        -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視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产午夜福利精品久久| 男女男精品视频网站在线观看| 国语自产精品视频| 97精品一区二区视频在线观看 | 四虎精品影院永久在线播放| 亚洲国产精品综合久久网络| 国产精品一香蕉国产线看观看| 国产精品一在线观看| 精品无码AV一区二区三区不卡| 亚洲国产精品视频| 久久精品国产99久久丝袜| wwwvr高清亚洲精品二区| 精品亚洲欧美高清不卡高清| 精品久久久无码人妻中文字幕豆芽| 亚洲欧美日韩国产一区二区三区精品 | 亚洲国产精品高清久久久| 精品无码国产自产拍在线观看蜜 | 少妇人妻偷人精品免费视频| 亚洲A∨精品一区二区三区| 国产欧美精品区一区二区三区| 青草青草久热精品视频在线网站 | 国产精品久久毛片完整版| 国产午夜精品无码| 欧美精品v欧洲精品| 久久亚洲国产欧洲精品一| 欧美精品亚洲精品日韩专区| 青青青青久久精品国产h| 99精品视频免费| 成人精品视频一区二区三区 | 国产精品视频a播放| 99热成人精品热久久669| 国产99视频精品免视看7| 国产精品禁18久久久夂久| 国产精品无码A∨精品影院| 久久精品蜜芽亚洲国产AV| 久久精品无码专区免费青青| 久久精品国产亚洲av影院| 精品久久久久久久无码| 99久久人妻无码精品系列| 国产成人久久精品区一区二区| 国产精品毛片久久久久久久|