Docker中容器數(shù)據(jù)卷詳解
什么是容器數(shù)據(jù)卷
從docker的理念說起,docker將應用和環(huán)境打包成一個鏡像,運行鏡像(生成容器)就可以訪問服務了。
如果數(shù)據(jù)都存在容器中,那么刪除容器,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久化 MySQL容器刪了,就相當于刪庫了。需求:MySQL數(shù)據(jù)可以本地存儲
容器之間可以有一個數(shù)據(jù)共享的技術,docker容器產生的數(shù)據(jù)同步到本地或者別的地方。
這就是數(shù)據(jù)卷技術,就是目錄掛載,將容器內的目錄,掛載到虛擬機上或者Linux上

目的:實現(xiàn)容器數(shù)據(jù)的持久化和同步操作。容器間也可以數(shù)據(jù)共享
數(shù)據(jù)的覆蓋問題
如果掛載一個空的數(shù)據(jù)卷到容器中的一個非空目錄中,那么這個目錄下的文件會被復制到數(shù)據(jù)卷中。
如果掛載一個非空的數(shù)據(jù)卷到容器中的一個目錄中,那么容器中的目錄中會顯示數(shù)據(jù)卷中的數(shù)據(jù)。如果原來容器中的目錄中有數(shù)據(jù),那么這些原始數(shù)據(jù)會被隱藏掉。
這兩個規(guī)則都非常重要,靈活利用第一個規(guī)則可以幫助我們初始化數(shù)據(jù)卷中的內容。掌握第二個規(guī)則可以保證掛載數(shù)據(jù)卷后的數(shù)據(jù)總是你期望的結果。
使用數(shù)據(jù)卷
方式一:直接使用命令掛載 -v
docker run -it -v 主機目錄:容器內目錄 docker run -it -v /home/test:/home centos /bin/bash
docker inspect 命令查看容器信息

測試掛載卷
1、在容器內部修改文件同步到Linux主機上
進入容器,在/home目錄下創(chuàng)建123.sh文件

主機內可以查看在容器內部創(chuàng)建的文件

2、同樣地,在Linux上修改掛在卷文件可以同步到容器內部

3、停止容器,修改Linux主機上的文件,同步到容器內
# 1、停止容器 exit # 2、查看容器是否還在運行 docker ps # 3、在Linux主機上修改對應目錄的文件 # 4、啟動容器并查看 # 4.1、 查看歷史運行的容器 docker ps -a # 4.2、 啟動容器 docker start CONTAINER ID # 4.3、 進去容器 docker attach CONTAINER ID # 4.4、 查看數(shù)據(jù)卷文件

方式二:Dockerfile文件
請查看下一章節(jié)
數(shù)據(jù)卷命令
docker volume docker volume --help Usage: docker volume COMMAND Manage volumes Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes Run 'docker volume COMMAND --help' for more information on a command.

具名掛載/匿名掛載 匿名掛載
-v 容器內路徑 -P 自動分配端口號 docker run -d -P --name nginx02 -v /etc/nginx nginx
具名掛載
-v 卷名:容器內路徑 docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx

查看數(shù)據(jù)卷
方式一:docker inspect 容器ID

方式二:docker volume inspect juming-nginx

查看Linux主機docker工作目錄 /var/lib/docker
所有docker容器內的卷,沒有指定目錄的情況下都是存放在 /var/lib/docker/volumes/xxx/_data 目錄下

掛載三種方式
# 1 -v 容器內路徑 # 匿名掛載 # 2 -v 卷名:容器內路徑 # 具名掛載 # 3 -v 宿主機路徑:容器內路徑 # 指定路徑掛載
擴展
給掛載的數(shù)據(jù)卷增加讀寫權限控制
通過 -v 容器內路徑, ro rw 改變讀寫權限
ro readonly 只讀
rw readwrite 可讀寫
# 一旦設置了容器權限,容器對我們掛載出來的內容就有限定了 docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx
ro : 說明這個路徑只能通過宿主機來操作,容器內無法操作
到此這篇關于Docker中容器數(shù)據(jù)卷詳解的文章就介紹到這了,更多相關Docker容器數(shù)據(jù)卷內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- docker 啟動elasticsearch鏡像,掛載目錄后報錯的解決
- docker-修改容器掛載目錄的3種方法小結
- docker 查看容器的掛載目錄操作
- docker中容器數(shù)據(jù)卷volume介紹
- Docker容器中數(shù)據(jù)卷volumes的使用
- Docker容器數(shù)據(jù)卷介紹及操作示例
- Docker容器數(shù)據(jù)卷技術介紹
- Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結
- Docker容器數(shù)據(jù)卷的使用教程
- docker如何對已經啟動的容器添加目錄映射(掛載目錄)
- Docker數(shù)據(jù)卷和掛載目錄的使用
相關文章
docker的WARNING:bridge-nf-call-iptables is disabled
這篇文章主要介紹了docker的WARNING:bridge-nf-call-iptables is disabled的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Docker mysql+nacos單機部署的實現(xiàn)步驟
本文主要介紹了Docker mysql+nacos單機部署的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
Docker格式化輸出命令:"docker?inspect?--format"?學習記錄
Docker?--format?參數(shù)提供了基于?Go模板?的日志格式化輸出輔助功能,并提供了一些內置的增強函數(shù),這篇文章主要介紹了Docker格式化輸出命令:"docker?inspect?--format"?學習筆記,需要的朋友可以參考下2023-01-01

