面向物件(上)-方法-Java的值傳遞機制
阿新 • • 發佈:2021-07-08
場景假設:將環境和應用打包成一個映象。當我們使用Mysql時將資料儲存在了Mysql容器裡、刪除了Mysql容器就等於刪除跑路了。要求資料持久化。
一)什麼是容器資料卷?
當我們正在使用docker容器的時候、會產生一系列的資料檔案、這些資料檔案在我們關閉docker容器時是會消失的、但是其中產生的部分內容我們是希望能夠把它給儲存起來另作用途的,Docker將應用與執行環境打包成容器釋出,我們希望在執行過程鍾產生的部分資料是可以持久化的的,而且容器之間我們希望能夠實現資料共享。
資料共享傳遞:容器之間配置資訊的傳遞,資料卷的生命週期會一致持續到沒有容器使用它為止,換言之,只要有一個容器仍在使用該資料卷,該資料卷一直都可以進行資料共享,通俗地來說,如果此時我們把父容器關閉掉,兩個字容器之間依舊可以進行資料共享,而且通過繼承子容器生成的新容器,一樣可以與子容器進行資料共享。這就是docker容器間的資料傳遞共享。
通俗地來說,docker容器資料卷可以看成使我們生活中常用的u盤,它存在於一個或多個的容器中,由docker掛載到容器,但不屬於聯合檔案系統,Docker不會在容器刪除時刪除其掛載的資料卷。
特點:
1:資料卷可以在容器之間共享或重用資料
2:資料卷中的更改可以直接生效
3:資料卷中的更改不會包含在映象的更新中
4:資料卷的生命週期一直持續到沒有容器使用它為止
當我們正在使用docker容器的時候、容器之間有一個數據共享的技術、docker容器中產生的資料儲存到本地
二)新增資料卷的方式
-
1.使用命令來掛載
docker run -it -v 主機目錄、容器目錄 容器id 這個命令會在宿主機和容器內分別建立兩個目錄,兩個目錄是對接的,裡面的資料可以共享。如果我們不知道資料卷是否掛載成功時,我們可以通過以下方式來檢查資料卷的掛載結果。 docker inspect 容器id、name 在本機伺服器上儲存 #先進入home目錄檢測home目錄下 [root@xiaozhang1999 ~]# cd /home [root@xiaozhang1999 home]# ls [root@xiaozhang1999 home]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcattunc latest 276239fa14a3 22 hours ago 672MB tomcat 9.0 5505f7218e4d 7 days ago 667MB tomcat latest 5505f7218e4d 7 days ago 667MB tomcat ssss 5505f7218e4d 7 days ago 667MB redis latest fad0ee7e917a 3 weeks ago 105MB mysql 5.7 2c9028880e58 6 weeks ago 447MB mysql latest c0cdc95609f1 6 weeks ago 556MB portainer/portainer latest 580c0e4e98b0 3 months ago 79.1MB hello-world latest d1165f221234 3 months ago 13.3kB centos latest 300e315adb2f 6 months ago 209MB [root@xiaozhang1999 home]# docker run -it -v /home/ceshi:/home centos [root@185d7e114c39 /]# cd home [root@185d7e114c39 home]# ls # Ctrl+P+Q退出centos [root@185d7e114c39 home]# [root@xiaozhang1999 home]# #檢測本地home目錄下是否生成了本機目錄 [root@xiaozhang1999 home]# ll total 0 drwxr-xr-x 2 root root 6 Jun 24 14:40 ceshi #檢視掛載的詳情 [root@xiaozhang1999 home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 185d7e114c39 centos "/bin/bash" 13 minutes ago Up 13 minutes eloquent_leakey [root@xiaozhang1999 home]# docker inspect eloquent_leakey