docker 容器資料卷volume
如果資料都在容器中,那么我們洗掉容器的時候資料就會丟失,所以我們希望資料可以持久化,
例如MySQL容器,我們希望資料可以存盤在本地,當MySQL容器洗掉的時候,資料不會丟失,
容器之間可以有一個資料共享的技術,Docker容器中產生的資料,同步到本地,這就是卷技術,也就是資料掛載技術,將我們容器內的目錄,掛載到Linux上面,

掛載之后,我們在容器內做的操作回同步到Linux宿主機上,
使用資料卷
方式一:直接使用命令掛載 -v
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
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
實作資料同步,容器間資料共享
資料卷容器洗掉檔案后不會影響掛載在此容器上的其他容器的資料訪問,是一種拷貝的概念,備份拷貝機制,

容器之間配置資訊的傳遞,資料卷容器的生命周期持續到沒有容器使用為止,
但是一旦持久化到本地,本地的資料是不會洗掉的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397345.html
標籤:其他
下一篇:Python判斷回文鏈表
