官术网_书友最值得收藏!

1.8 數據卷的使用

當容器創建出來之后,會映射到物理機的某個目錄(這個目錄叫作容器層)里,在容器里寫的東西實際上都存儲在容器層,所以只要容器不被刪除,在容器里寫的數據就會一直存在。但是,一旦刪除容器,對應的容器層也會被刪除。

如果希望數據能永久保存,則需要配置數據卷,把容器里的指定目錄掛載到物理機的某個目錄里,如圖1-19所示。

圖1-19 數據卷

這里把物理機的目錄/xx掛載到容器的/data目錄里,當往容器的目錄/data里寫數據時,實際上是往物理機的目錄/xx里寫的。這樣即使刪除了容器,物理機目錄/xx里的數據仍然是存在的,就實現了數據的永久保留(除非手動刪除)。

在創建容器時,用-v指定數據卷,用法如下。

(1)-v /dir1:物理機的目錄/var/lib/docker/volumes/ID/_data/會掛載到容器的/dir1目錄里,這里的ID是隨機生成的。

(2)-v /dir2:/dir1:在物理機里指定目錄/dir2映射到容器的/dir1目錄里。

記住,冒號左邊的/dir2是物理機的目錄,冒號右邊的/dir1是容器里的目錄,這兩個目錄如果不存在,在創建容器時會自動創建。

第1步 創建容器c1,把物理機的一個隨機目錄掛載到容器的/data目錄里。

在此命令里,-v后面只指定了一個目錄/data,指的是在容器里創建/data,掛載物理機的一個隨機目錄。

上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。

第2步 查看容器里的/data目錄對應物理機的哪個目錄。

上面有兩個參數,其中Destination指的是容器里的目錄,Source指的是物理機對應的目錄。

往容器里拷貝一個文件。

可以看到,目錄是空的。

第3步 刪除此容器。

上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。

如果想在物理機里也指定目錄而不是隨機目錄,則用法為-v /xx:/data,此處冒號左邊是物理機的目錄,冒號右邊是容器里的目錄。

第4步 創建容器c1,把物理機的目錄/xx映射到容器的/data目錄里。

在nerdctl里物理機所需要的目錄不能自動創建,所以需要在vms101上先創建目錄/xx,然后在vms101上可以通過如下命令來實現。

查看此容器的屬性。

第5步 拷貝一些測試文件過去觀察一下。

第6步 刪除此容器。

上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。

剛才在創建容器指定卷時,是這樣寫的-v /xx:/data,其實這里隱藏了一個默認選項rw,即完整的寫法是-v /xx:/data:rw,也就是容器里的/data是以rw的方式掛載物理機的/xx目錄,可以使用ro(只讀)的方式掛載卷。

第7步 在創建容器時設置卷為只讀。

上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。

此時往容器里拷貝一個數據。

拷貝不過去,因為現在是以ro的方式掛載物理機的/xx目錄。

第8步 刪除此容器。

上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。

主站蜘蛛池模板: 庆元县| 临澧县| 博客| 佛山市| 栾城县| 广南县| 湄潭县| 尚志市| 宜兰市| 灵川县| 屏东市| 梅河口市| 陕西省| 姜堰市| 景德镇市| 茌平县| 汶上县| 邵阳县| 沙洋县| 东明县| 海城市| 望城县| 涿鹿县| 利辛县| 深州市| 额尔古纳市| 剑川县| 安阳县| 长汀县| 博乐市| 永城市| 鄂托克旗| 宝鸡市| 奉贤区| 山东| 德格县| 额济纳旗| 新建县| 双峰县| 边坝县| 彝良县|