docker的理念回顧
將應用和環境打包成乙個映象
資料?如果資料在容器中,那麼我們的容器刪除,資料就會丟失!需求:資料持久化!
mysql,容器刪了,刪庫跑路!需求:mysql資料可以儲存本地
容器之間可以有乙個資料共享的技術,docker容器中產生的資料同步到本地!
這就是卷技術,目錄的掛在,將我們容器內的目錄,掛在到linux上!
總結一句話:容器的持久化和同步操作,容器間也是可以資料共享的
方式一:直接使用命令來掛在 -v
docker run -it -v 主機目錄:容器內目錄我們現在會發現本地home目錄下多了個ceshi目錄
此時,在本地檢視容器的詳情
往下翻檢視會看到此處的掛載資訊
注意:這兩處目錄為雙向繫結,容器內目錄下檔案修改,會同步到本地,同時,只要容器還在(即是未開啟),本地修改的記錄也會同步到容器中
好處:我們以後修改只需要在本地修改即可,容器會自動同步
匿名掛載
-v 容器內路徑docker run -d -p --name ngigx01 -v /ect/nginx nginx 大寫p即是隨機埠
docker volume ls 檢視所有的volume的情況
這裡發現,這裡就是匿名掛載,我們在 -v中只寫了容器路徑,並沒有寫本地路徑!具名掛載
docker run -d -p --name ngin02 -v nginxtest:/ect/nginx nginx檢視一下這個卷通過-v 卷名:容器內路徑
docker volume inspect 卷名
所有的docker容器內的卷,沒有指定目錄的情況下都是在
/var/lib/docker/volumes/***x/_data中
我們通過具名掛載可以方便的找到我們的乙個卷,大多數情況下使用具名掛載
總結:
匿名掛載 -v 容器內路徑
具名掛載 -v 卷名:容器內路徑
指定路徑掛載: -v 本地路徑:容器內路徑 拓展
docker run -d -p --name nginx01 -v nginx01:/etc/nginx:ronginxro,rw改變容器讀寫許可權,ro時只能在宿主機中操作docker run -d -p --name nginx01 -v nginx01:/etc/nginx:rwnginx
多個容器之間實現資料共享
先建立乙個容器:
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e mysql_root_password=123456 --name mysql01 mysql:5.7
然後再建立乙個容器通過–volumes-from繼承上面這個容器,從而實現資料共享(實質上是一種拷貝,雙向繫結)
docker run -d -p 3310:3306 -e mysql_root_password=123456 --name mysql02–volumes-from mysql01mysql:5.7
此時,可以實現兩個容器資料同步
容器01和02都掛載同乙個資料捲到相同的目錄。兩個容器任何一方在該目錄下的寫入資料,其他容器都可以看到
注意:
可以多次使用–volumes-from引數來從多個容器掛載多個資料卷。還可以從其他已經掛載了容器卷的容器來掛載資料卷。
使用–volumes-from引數所掛載資料卷的容器自身並不需要保持在執行狀態。
如果刪除了掛載的容器(包括dbdata、db1和db2),資料卷並不會被自動刪除。如果要刪除乙個資料卷,必須在刪除最後乙個還掛載著它的容器時顯式使用docker rm -v命令來指定同時刪除關聯的容器。
容器之間配置資訊的傳遞,資料卷容器的生命週期一直持續到沒有容器為止,但是一旦持久化到了本地,這個時候本地的資料是不會刪除的
Docker 資料卷 資料卷容器
一,概念解析 1,資料卷 資料卷就是在宿主中可以在容器之間進行共享和重用的一系列和檔案和資料夾,通過docker run v命令可以將資料卷掛載到對應的容器目錄空間,進行檔案讀取,容器卷特性如下 資料卷可以在容器之間共享和重用,容器間傳遞資料將變得高效方便 對資料卷內資料的修改會立馬生效,無論是容器...
docker學習(11)資料卷容器
我們現在想實現多個容器資料同步,比如多個mysql資料同步,掛載了的容器被稱為父容器。現在我們先把容器1起一下,用我們上個文章建立的wang centos root wangstudy data docker run it name docker1 wang centos root 5cd8cba5...
Docker學習06 容器資料卷
又來到了乙個新的概念,每次到乙個新的概念,就要問自己 是什麼?有什麼用?怎麼用?能幹嘛?解決了什麼痛點?有什麼優勢?先說乙個坑 docker掛載主機目錄訪問如果出現cannot open directory permission denied,解決方法就是在掛載目錄後多加一條命令 privilege...