最詳細的整理docker數據卷教程

本篇文章給大家帶來了關于docker中數據卷的相關知識,數據卷可以在容器之間共享或重用數據,數據卷中的更改不會包含在鏡像的更新中,希望對大家有幫助。

最詳細的整理docker數據卷教程

推薦學習:《docker

什么是數據卷

使用docker容器的時候,會產生一系列的數據文件,這些數據文件在刪除docker容器時是會消失的,但是其中產生的部分內容是希望能夠把它給保存起來另作用途的,Docker將應用與運行環境打包成容器發布,程序員希望在運行過程鐘產生的部分數據是可以持久化的的,而且容器之間我們希望能夠實現數據共享。

一般地來說,docker容器數據卷可以看成常用的u盤,它存在于一個或多個的容器中,由docker掛載到容器,但不屬于聯合文件系統,Docker不會在容器刪除時刪除其掛載的數據卷。

數據卷的特點

數據卷可以在容器之間共享或重用數據

數據卷中的更改可以立即生效

數據卷中的更改不會包含在鏡像的更新中

數據卷默認會一直存在,即使容器被刪除

數據卷的生命周期一直持續到沒有容器使用它為止

容器中的管理數據

數據卷:Data Volumes 容器內數據直接映射到本地主機環境

數據卷容器:Data Volume Containers 使用特定容器維護數據卷

docker常用命令cp

語法

宿主機文件復制到容器內

docker?cp?[OPTIONS]?SRC_PATH?CONTAINER:DEST_PATH

容器內文件復制到宿主機

docker?cp?[OPTIONS]?CONTAINER:SRC_PATH?DEST_PATH

常用參數

-L :保持源目標中的鏈接

基本使用

宿主機文件復制到容器內

docker?cp?/data/index.html?nginx:/usr/share/nginx/html/index.html

容器內文件復制到宿主機

docker?cp?nginx:/etc/nginx/nginx.conf?/data

docker數據卷

數據卷(Data Volumes)是一個可供一個或多個容器使用的特殊目錄,它將主機操作系統目錄直接映射進容器。

數據卷注意事項

掛載數據卷,最好是通過run而非create/start創建啟動容器,create/start命令創建啟動容器 后,再掛載數據卷相當麻煩,要修改很多配置文件,但并非不可以。

docker官網推薦盡量進行目錄掛載,不要進行文件掛載

數據卷類型

宿主機數據卷:直接在宿主機的文件系統中但是容器可以訪問(bind mount)

命名的數據卷:磁盤上Docker管理的數據卷,但是這個卷有個名字。

匿名數據卷:磁盤上Docker管理的數據卷,因為沒有名字想要找到不容易,Docker來管理這些文件。

宿主機數據卷

bind mounts:容器內的數據被存放到宿主機文件系統的任意位置,甚至存放到一些重要的系統目錄或 文件中。除了docker之外的進程也可以任意對他們進行修改。

當使用bind mounts時,宿主機的目錄或文件被掛載到容器中。容器將按照掛載目錄或文件的絕對路徑 來使用或修改宿主機的數據。宿主機中的目錄或文件不需要預先存在,在需要的使用會自動創建。

使用bind mounts在性能上是非常好的,但這依賴于宿主機有一個目錄妥善結構化的文件系統。

使用bind mounts的容器可以在通過容器內部的進程對主機文件系統進行修改,包括創建,修改和刪除 重要的系統文件和目錄,這個功能雖然很強大,但顯然也會造成安全方面的影響,包括影響到宿主機上 Docker以外的進程

注意事項

如果掛載一個空的數據卷到容器中的一個非空目錄中,那么這個目錄下的文件會被復制到數據卷中

如果掛載一個非空的數據卷到容器中的一個目錄中,那么容器中的目錄會顯示數據卷中的數據。如果原來容器中的目錄有數據,那么原始數據會被隱藏掉

基本使用

語法

docker?run?-v?/宿主機絕對路徑目錄:/容器內目錄?鏡像名

基本使用

docker?run?-itd?--name?mysql?--restart?always?--privileged=true?-p?3306:3306?-e?MYSQL_ROOT_PASSWORD=admin -v?/data/mysql:/var/lib/mysql?mysql:5.7.31?--character-set-server=utf8?--collation-server=utf8_general_ci

容器目錄權限

通過 -v 容器內路徑: ro rw 改變讀寫權限 ro:readonly 只讀

rw:readwrite 可讀可寫

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:rw 鏡像名

例如:

docker?run?-d?-P?--name?nginx05?-v?nginx1:/etc/nginx:ro?nginx docker?run?-d?-P?--name?nginx05?-v?nginx2:/etc/nginx:rw?nginx

ro 只要看到ro就說明這個路徑只能通過宿主機來操作,容器內部是無法操作!

命名的數據卷

基本使用

docker?run?-itd?--name?nginx?-p?80:80?-v?lagouedu-nginx:/etc/nginx?nginx:1.19.3-

alpine

查看docker數據卷 docker volume ls

查看lagouedu-nginx宿主機目錄

docker?volume?inspect?lagouedu-nginx

進入docker數據卷默認目錄

cd?/var/lib/docker/volumes/lagouedu-nginx

查看文件

ls

所有的文件docker默認保存在_data目錄中 cd _data

刪除容器

docker?rm?$(docker?stop?$(docker?ps?-aq))

查看掛載數據是否還存在,通過查看數據,發現刪除容器后,宿主機中的數據還存在

ls

匿名數據卷

基本使用

docker?run?-itd?--name?nginx?-p?80:80?-v?/etc/nginx?nginx:1.19.3-alpine?查看docker數據卷 docker?volume?ls

查看宿主機目錄

docker?volume?inspect?dbd07daa4e40148b11....

進入docker數據卷默認目錄

cd?/var/lib/docker/volumes/dbd07daa4e40148b11....

查看文件

ls

所有的文件docker默認保存在_data目錄中 cd _data

刪除容器

docker?rm?$(docker?stop?$(docker?ps?-aq))

查看掛載數據是否還存在,通過查看數據,發現刪除容器后,宿主機中的數據還存在

ls

數據卷容器

run命令

常用參數

–volumes-from

如果用戶需要在多個容器之間共享一些持續更新的數據,最簡單的方式是使用數據卷容器。數據卷容器

也是一個容器,但是它的目的是專門用來提供數據卷供其他容器掛載。

發現創建好的數據卷容器是處于停止運行的狀態,因為使用 —volumes-from 參數所掛載數據卷的容器 自己并不需要保持在運行狀態。

最詳細的整理docker數據卷教程

基本使用

docker?run?-d?--name?data-volume?-v?/data/nginx:/usr/share/nginx/html?-v /data/mysql:/var/lib/mysql?centos:7.8.2003 docker?run?-itd?--name?nginx01?-p?80:80?--volumes-from?data-volume?nginx:1.19.3- alpine echo?"nginx"?>?/data/nginx/index.html http://192.168.198.100 docker?run?-itd?--name?nginx02?-p?81:80?--volumes-from?data-volume?nginx:1.19.3- alpine http://192.168.198.100:81 docker?run?-itd?--name?mysql01?--restart?always?--privileged=true?-p?3306:3306 ?-e?MYSQL_ROOT_PASSWORD=admin?--volumes-from?data-volume?mysql:5.7.31?-- character-set-server=utf8?--collation-server=utf8_general_ci docker?run?-itd?--name?mysql02?--restart?always?--privileged=true?-p?3307:3306 ?-e?MYSQL_ROOT_PASSWORD=admin?--volumes-from?data-volume?mysql:5.7.31?-- character-set-server=utf8?--collation-server=utf8_general_ci

推薦學習:《docker

以上就是最詳細的整理

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享