Docker容器資料卷的使用
阿新 • • 發佈:2018-12-17
作用:
1.容器的持久化
2.容器間的繼承(主要體現在dockerfile)+共享資料
特點:
1.卷中的更改可以直接生效
2.資料卷中的更改不會包含在映象的更新中
3.資料卷的生命週期,會一直持續到沒有容器使用它為止
使用命令:docker run -it -v /宿主機絕對路徑目錄:/容器目錄 映象名
(如果宿主機和容器,沒有目錄則自動建立 並且使兩個路徑相互掛載)
演示:
1.docker run -it -v /HostComputer:/container centos
此時在宿主機的根目錄下建立了一個名為HostComputer的資料夾,並在容器的根目錄下建立了一個名為container 的資料夾(HostComputer資料夾和container已經相互掛載)
圖解:
2.使用命令檢視是否掛載成功:
docker inspect 容器id
首先我們檢視一下此時正在執行的容器id:
docker ps
檢視掛載是否成功:
docker inspect 7aed84125df8
3.此時說明已經掛載成功,來測試驗證一下
3.1給宿主機的HostComputer資料夾,新增一個檔案,並寫入(任意)(這裡使用::qwe)字串
3.2然後去容器container目錄下檢視是否同步
3.3在容器中對host.txt 進行修改,檢視宿主機下的host.txt是否也跟著進行了改變
(注:
容器停止退出後,宿主機修改後資料也是同步,只要容器再次啟動,修改的資料會自動更新到容器中
由此可得出結論此時的掛載是雙向掛載,無論是宿主機或者容器進行改變,其他一方,都會跟著改變;
那麼以下這個例子,我們來做,宿主機修改資料,容器也跟著改變,但是容器本身不能修改資料(
也就是容器只能讀,不能寫
)命令格式(帶許可權):
docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 映象名
docker run -it -v /HostComputer01:/container01:ro centos
此時在宿主機的根目錄下建立了一個名為HostComputer01的資料夾,並在容器的根目錄下建立了一個名為container01 的資料夾(注意:此時容器目錄後面追加了RO許可權)檢視掛載
測試,修改容器(宿主機修改,資料可以同步到容器中,容器不能對資料進行修改)