您好,登錄后才能下訂單哦!
小編給大家分享一下docker中容器數據卷volume有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
如果數據都在容器中,那么我們刪除容器的時候數據就會丟失,所以我們希望數據可以持久化。
例如MySQL容器,我們希望數據可以存儲在本地,當MySQL容器刪除的時候,數據不會丟失。
容器之間可以有一個數據共享的技術,Docker容器中產生的數據,同步到本地,這就是卷技術。也就是數據掛載技術,將我們容器內的目錄,掛載到Linux上面。
掛載之后,我們在容器內做的操作回同步到Linux宿主機上。
docker run -it -v 主機目錄:容器目錄 #測試 [root@sumarua home]# docker run -it -v /home/ceshi:/home centos /bin/bash # 啟動起來之后我們可以通過docker inspect容器id]來查看
示例
MySQL的數據持久化
[root@sumarua home]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=666666 --name mysql mysql5.7
具名掛載和匿名掛載
#匿名掛載 -v 容器內路徑 docker run -d -p --name nginx01 -v /etc/nginx nginx #查看所有的volume的情況 docker volume ls
# 具名掛載 # 通過 -v 卷名:容器內路徑 docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx #查看 docker volume ls
我們可以查看一下卷的掛載的具體位置
docker volume inspect [卷名]
所有的docker 容器內的卷,沒有指定目錄的情況下都在/var/lib/docker/volumes/xxxx/_data
通過具名掛載我們可以方便找到卷。
如何確定是具名掛載還是匿名掛載,還是指定路徑掛載
-v 容器內路徑 #匿名掛載 -v 卷名:容器內路徑 #具名掛載 -v /宿主機路徑:容器內路徑 #指定路徑掛載
拓展:
# 通過 -v 容器內路徑:ro rw 改變讀寫權限 ro readonly #只讀 rw readwrite #可讀可寫 #默認可讀可寫 #一旦設置了容器權限,容器對我們掛載出來的內容就有限定了 #ro 這個路徑只能通過宿主機來操作,容器內部是無法操作的。
Dockerfile 就是用來構建docker鏡像的構建文件,命令腳本。
通過這個腳本可以生成鏡像,鏡像是一層一層的,腳本是一個一個的命令,每個命令都是一層。
# 創建一個dockerfile文件,名字可以隨機,建議Dockerfile # 文件中的內容 指令(大寫)參數 FROM centos VOLUME ["volume01","volume02"] CMD echo "----end----" CMD /bin/bash # 這里的每個命令,就是鏡像的一層
--volumes-from
# 用法 [root@sumarua]#docker run -it --name docker02 --volumes-from docker01 sumarua/centos
實現數據同步,容器間數據共享
數據卷容器刪除文件后不會影響掛載在此容器上的其他容器的數據訪問。是一種拷貝的概念,備份拷貝機制。
容器之間配置信息的傳遞,數據卷容器的生命周期持續到沒有容器使用為止。
但是一旦持久化到本地,本地的數據是不會刪除的。
以上是“docker中容器數據卷volume有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。