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

        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视频在线精品国自产拍| 国产精品玖玖美女张开腿让男人桶爽免费看 | 国内精品久久久久久久久电影网| 久久香综合精品久久伊人| 久久国产香蕉一区精品| 自怕偷自怕亚洲精品| 国产精品一二区| 久久99热只有频精品8| 四虎国产精品成人| 精品国产AⅤ一区二区三区4区| 91精品福利在线观看| 国内精品久久久久| 国产精品三级在线| 国产精品区一区二区三在线播放 | 欧美成人精品一区二三区在线观看| 亚洲国产综合精品中文第一区| avtt天堂网久久精品| 人人妻人人澡人人爽精品日本| 欧美精品综合视频一区二区| 国产精品黄页免费高清在线观看| 亚洲精品私拍国产福利在线| 99国产精品一区二区| 国产精品综合色区在线观看| 亚洲AV日韩精品久久久久久久| 亚洲欧美日韩国产精品| 亚洲国产精品碰碰| 欲帝精品福利视频导航| 一区二区国产精品 | 久久久无码精品午夜| 久久99精品免费一区二区| 国产三级精品三级| 国产午夜亚洲精品理论片不卡| 国产精品成人啪精品视频免费| 国产精品视频色视频| 国产精品色视频ⅹxxx| 国语自产精品视频| 青草青草久热精品视频在线观看| 最新在线精品国自av| 久久亚洲精品国产精品| 99麻豆久久久国产精品免费| 久久精品国产精品青草|