在容器中管理資料的兩種方式

2022-06-11 05:03:11 字數 1960 閱讀 7989

在 docker 內部以及容器之間管理資料,在容器中管理資料主要有兩種方式:

資料卷 是乙個可供乙個或多個容器使用的特殊目錄,它繞過 ufs,可以提供很多有用的特性:

注意:資料卷的使用,類似於linux下對目錄或檔案進行mount,映象中的被指定為掛載點的目錄中的檔案會隱藏掉,能顯示看的是掛載的資料卷。

# 建立乙個資料卷

docker volume create my-vol

# 檢視所有的 資料卷

docker volume ls

在主機裡使用以下命令可以檢視指定資料卷 的資訊

docker volume inspect my-vol

[ ,

"mountpoint": "/var/lib/docker/volumes/my-vol/_data",

"name": "my-vol",

"options": {},

"scope": "local"

}]

docker run -d -p \

--name web \

# 注:使用-v引數或者使用--mount引數

在主機裡使用以下命令可以檢視 web 容器的資訊,資料卷 資訊在 "mounts" key 下面

docker inspect web

"mounts": [

],

docker volume rm my-vol
資料卷是被設計用來持久化資料的,它的生命週期獨立於容器,docker 不會在容器被刪除後自動刪除資料卷,並且也不存在垃圾**這樣的機制來處理沒有任何容器引用的資料卷。

如果需要在刪除容器的同時移除資料卷。可以在刪除容器的時候使用docker rm -v這個命令。

無主的資料卷可能會佔據很多空間,要清理請使用以下命令:docker volume prune

使用--mount標記可以指定掛載乙個本地主機的目錄到容器中去。

docker run -d -p \

--name web \

這個功能在進行測試的時候十分方便,比如使用者可以放置一些程式到本地目錄中,來檢視容器是否正常工作。本地目錄的路徑必須是絕對路徑,以前使用-v引數時如果本地目錄不存在 docker 會自動為你建立乙個資料夾,現在使用--mount引數時如果本地目錄不存在,docker 會報錯。

docker 掛載主機目錄的預設許可權是 讀寫,使用者也可以通過增加 readonly 指定為 唯讀。

docker run -d -p \

--name web \

touch: new.txt: read-only file system

在主機裡使用以下命令可以檢視 web 容器的資訊,資料卷 資訊在 "mounts" key 下面

docker inspect web

"mounts": [

],

--mount標記也可以從主機掛載單個檔案到容器中

docker run --rm -it \

# -v $home/.bash_history:/root/.bash_history \

--mount type=bind,source=$home/.bash_history,target=/root/.bash_history \

ubuntu:18.04 \

bash

root@2affd44b4667:/# history

1 ls

2 diskutil list

Docker 為容器設定資料卷的兩種方式

以安裝mysql為例 在宿主機建立與mysql容器掛載的檔案目錄 如 mysql 在該目錄下至少包含下面三個目錄 data logs conf 進入mysql目錄下,執行下面容器執行命令,繫結容器卷。執行mysql docker run p 3306 3306 name mysql v pwd co...

在Razor中輸出Html的兩種方式

razor中所有的html都會自動編碼,這樣就不需要我們手動去編碼了 安全 但在需要輸出html時就是已經轉義過的html文字了,如下所示 string thistest qubernet thistest 這樣在頁面輸出的文字就是 qubernet而不是紅色的字型了.要輸出紅色的字型,有下面常用的...

spring建立ioc容器的兩種方式

bean是乙個由spring ioc容器例項化 組裝和管理的物件。第一種方式,基於xml檔案 long countbyexample userexample example int deletebyexample userexample example int deletebyprimarykey ...