最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker容器的幾種存儲(chǔ)詳解

 更新時(shí)間:2021年08月19日 09:37:21   作者:頂級(jí)飲水機(jī)管理員  
本文主要介紹了docker容器的幾種存儲(chǔ)方式,主要介紹了3種,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

寫(xiě)在前面

我們?cè)谏掀獙W(xué)習(xí)了容器網(wǎng)絡(luò),對(duì)容器網(wǎng)絡(luò)驅(qū)動(dòng)bridge工作原理做了較為詳細(xì)的介紹,今天小作文一起看看容器中另一個(gè)關(guān)鍵域-存儲(chǔ)。

容器的存儲(chǔ)可以分為兩大類:

一種是與鏡像相關(guān)的即我們?cè)凇禿ocker容器技術(shù)基礎(chǔ)之聯(lián)合文件系統(tǒng)OverlayFS》一文提到的容器層Copy-On-Write特性。默認(rèn)情況下,在容器內(nèi)創(chuàng)建的所有文件都存儲(chǔ)在可寫(xiě)容器層上,這種直接將文件存儲(chǔ)在容器層的方式數(shù)據(jù)難以持久化和共享,由于依賴存儲(chǔ)驅(qū)動(dòng)與使用直接寫(xiě)入主機(jī)文件系統(tǒng)的數(shù)據(jù)卷相比,這種額外的抽象會(huì)降低性能 。

另一中是宿主機(jī)存儲(chǔ)即通過(guò)將宿主機(jī)目錄綁定或掛在到容器中使用,容器停止后數(shù)據(jù)也能持久化。小作文主要介紹后者。

幾種存儲(chǔ)掛載方式

這里我們根據(jù)數(shù)據(jù)存儲(chǔ)在 Docker 主機(jī)上的不同位置繪制如下圖:

1.bind mounts

綁定掛載與卷相比,功能有限。使用綁定掛載時(shí),主機(jī)上的文件或目錄會(huì)掛載到容器中。文件或目錄由其在主機(jī)上的完整路徑引用。目錄不需要已經(jīng)存在于 Docker 主機(jī)上,如果不存在,docker會(huì)幫我們創(chuàng)建。 注意一下,只能自動(dòng)創(chuàng)建目錄哦。

我們通過(guò) -v 選項(xiàng)綁定掛載一個(gè)目錄 /nginx/html 到容器中看看

docker run -dt -v /nginx/html:/usr/share/nginx/html --name nginx nginx

通過(guò)docker inspect nginx 查看容器 Mounts字段

"Mounts": [
    {
        "Type": "bind",
        "Source": "/nginx/html",
        "Destination": "/usr/share/nginx/html",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

接著我們?cè)赿ocker主機(jī)上創(chuàng)建一個(gè)index.html并寫(xiě)入hello nginx,然后訪問(wèn)容器IP,顯然我們的掛載已經(jīng)生效了。

[root@localhost ~]# echo "hello nginx" >  /nginx/html/index.html
[root@localhost ~]# curl 172.17.0.4
hello nginx

這里有一個(gè)問(wèn)題,我們可以通過(guò)docker主機(jī)修改文件使容器內(nèi)文件生效,反過(guò)來(lái)也一樣,容器可以修改、創(chuàng)建和刪除主機(jī)文件系統(tǒng)上的內(nèi)容。處理這個(gè)問(wèn)題我們可以在創(chuàng)建容器的時(shí)候配置掛載目錄的權(quán)限,比如下面的只讀權(quán)限:

docker run -dt -v /nginx/html:/usr/share/nginx/html:ro --name nginx nginx

所以在我們使用綁定掛載的時(shí)候,你操作的是主機(jī)文件系統(tǒng),你必須清楚如下:

  • 你掛載的目錄包含哪些內(nèi)容,以免對(duì)其他應(yīng)用造成影響。
  • 你的容器是否應(yīng)該有權(quán)操作這些目錄。

2.volumes

volume存儲(chǔ)卷由 Docker 創(chuàng)建和管理,我們可以使用該docker volume create命令顯式的創(chuàng)建卷,或者在容器創(chuàng)建時(shí)創(chuàng)建卷。

[root@localhost ~]# docker volume create nginx_volume
nginx_volume
[root@localhost volumes]# docker inspect  nginx_volume
[
    {
        "CreatedAt": "2021-08-12T01:58:04-04:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_volume/_data",
        "Name": "nginx_volume",
        "Options": {},
        "Scope": "local"
    }
]

可以看到掛載點(diǎn)處于docker的根目錄/var/lib/docker/volumes下

通過(guò)docker volume rm/prune 清除單個(gè)或所有未再使用的卷,可以通過(guò)docker 命令來(lái)管理卷是對(duì)比綁定掛載的一個(gè)優(yōu)勢(shì)。

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     owncloud-docker-server_files
local     owncloud-docker-server_mysql
local     owncloud-docker-server_redis
[root@localhost ~]# docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
owncloud-docker-server_files
owncloud-docker-server_mysql
owncloud-docker-server_redis
​
Total reclaimed space: 199.4MB

在創(chuàng)建容器時(shí)如果未指定容器掛載的源則docker會(huì)自動(dòng)為我們創(chuàng)建一個(gè)匿名卷,同樣位于docker根目錄下。

[root@localhost volumes]# docker run -dt -v /usr/share/nginx/html --name nginx_with_volume nginx
d25bdfce9c7ac7bde5ae35067f6d9cf9f0cd2c9cbea6d1bbd7127b3949ef5ac6
[root@localhost volumes]# docker volume ls 
DRIVER    VOLUME NAME
local     d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980
local     nginx_volume
[root@localhost volumes]# ls /var/lib/docker/volumes/
backingFsBlockDev  d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980  metadata.db  nginx_volume

當(dāng)我們創(chuàng)建掛載卷之后,此時(shí)的存儲(chǔ)與bind mounts是一致,不過(guò)當(dāng) docker 主機(jī)不能保證具有給定的目錄或文件結(jié)構(gòu)時(shí),卷可幫助我們將 docker 主機(jī)的配置與容器運(yùn)行時(shí)分離。這樣一來(lái)當(dāng)我們需要將數(shù)據(jù)從一臺(tái) Docker 主機(jī)備份、還原或遷移到另一臺(tái)時(shí),卷就很方便了,可以脫離host path的限制。

在使用綁定掛載和卷時(shí)我們要注意下面?zhèn)鞑ジ采w原則:

掛載一個(gè)空卷時(shí):容器內(nèi)目錄的內(nèi)容會(huì)傳播(復(fù)制)到卷中。

綁定掛載或非空卷時(shí):容器內(nèi)目錄的內(nèi)容會(huì)被卷或綁定的主機(jī)目錄覆蓋。

3.tmpfs mount

tmpfs掛載僅適用于linux主機(jī),當(dāng)我們使用tmpfs掛載創(chuàng)建容器時(shí),容器可以在容器的可寫(xiě)層之外創(chuàng)建文件。將數(shù)據(jù)保留在內(nèi)存中,當(dāng)容器停止時(shí),寫(xiě)入的數(shù)據(jù)也將被移除。主要用于臨時(shí)存儲(chǔ)不想保留在主機(jī)或容器可寫(xiě)層中的敏感文件。

通過(guò)--tmpfs選項(xiàng)掛載一個(gè)內(nèi)存塊。

docker run -dt --name busybox_tmpfs --tmpfs /etc/running busybox

通過(guò)--mount的方式帶上參數(shù),指定臨時(shí)存儲(chǔ)大小。

docker run -dt --name busybox_tmpfs2 --mount type=tmpfs,tmpfs-size=2048,destination=/etc/running busybox

存儲(chǔ)數(shù)據(jù)共享

在容器之間共享數(shù)據(jù)主要有兩種方法,第一種比較簡(jiǎn)單,只需要將目錄或者volume掛載到多個(gè)容器中即可。這里不做贅述,我們來(lái)看一下通過(guò)中間容器實(shí)現(xiàn)共享的方式。

我們創(chuàng)建一個(gè)中間容器,包含綁定掛載目錄和一個(gè)卷。

docker create -v /share:/volume1 -v /volume2  --name volume_share  busybox

在我們需要共享的容器中通過(guò)選項(xiàng)--volumes-from拿過(guò)來(lái)用即可

docker run -d -t --volumes-from volume_share  --name container1  busybox

我們inspect檢查一下Mounts字段,此時(shí)container1已經(jīng)掛載到了一個(gè)bind目錄和一個(gè)volume

"Mounts": [
    {
        "Type": "bind",
        "Source": "/share",
        "Destination": "/volume1",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    },
    {
        "Type": "volume",
        "Name": "21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e",
        "Source": "/var/lib/docker/volumes/21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e/_data",
        "Destination": "/volume2",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

關(guān)于docker容器存儲(chǔ)我們先學(xué)習(xí)到這,希望這篇小作文在你需要時(shí)對(duì)你有點(diǎn)用。

到此這篇關(guān)于docker容器的幾種存儲(chǔ)詳解的文章就介紹到這了,更多相關(guān)docker容器存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    這篇文章主要介紹了Windows?利用?WSL2?安裝?Docker?的2種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • docker-compose如何定義容器的ip

    docker-compose如何定義容器的ip

    這篇文章主要介紹了docker-compose如何定義容器的ip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker磁盤空間清理的解決辦法

    docker磁盤空間清理的解決辦法

    前段時(shí)間遇到docker磁盤空間太少,無(wú)法寫(xiě)入數(shù)據(jù)的問(wèn)題。本文就來(lái)介紹一下docker磁盤空間清理的解決辦法,感興趣的可以了解一下
    2021-06-06
  • 詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法

    詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法

    本篇文章主要介紹了詳解Docker掛載本地目錄及實(shí)現(xiàn)文件共享的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Docker容器在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行配置方法

    Docker容器在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行配置方法

    docker容器化可以使得環(huán)境相對(duì)獨(dú)立,減少污染,這篇文章主要給大家介紹了關(guān)于Docker容器在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行配置的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • docker網(wǎng)絡(luò)及部署集群和打包鏡像問(wèn)題

    docker網(wǎng)絡(luò)及部署集群和打包鏡像問(wèn)題

    這篇文章主要介紹了docker網(wǎng)絡(luò)及部署集群和打包鏡像問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式

    這篇文章主要介紹了docker?nginx(訪問(wèn)靜態(tài)文件、訪問(wèn)共享目錄、負(fù)載均衡)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • docker數(shù)據(jù)卷容器掛載不上的解決方法

    docker數(shù)據(jù)卷容器掛載不上的解決方法

    docker容器之間可以通過(guò)相互掛載實(shí)現(xiàn)數(shù)據(jù)共享,本文主要介紹了docker數(shù)據(jù)卷容器掛載不上的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Dockerfile基礎(chǔ)分享

    Dockerfile基礎(chǔ)分享

    在Docker中,構(gòu)建一個(gè)自定義鏡像共有兩種方法,一是通過(guò)commit指令構(gòu)建,二是通過(guò)Dockerfile文件構(gòu)建。今天我們主要來(lái)詳細(xì)探討下Dockerfile的一些基礎(chǔ)。
    2017-01-01
  • Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口的問(wèn)題解決

    Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口的問(wèn)題解決

    haproxy提供高可用性、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案,這篇文章主要介紹了Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

那坡县| 赤峰市| 黑河市| 乌兰察布市| 饶阳县| 英德市| 崇仁县| 南岸区| 河间市| 赤壁市| 浑源县| 嘉祥县| 隆化县| 同江市| 汪清县| 克东县| 剑阁县| 武定县| 革吉县| 思南县| 芒康县| 西畴县| 长沙市| 吴堡县| 清镇市| 乌鲁木齐县| 曲周县| 黔南| 永城市| 五华县| 南木林县| 松原市| 申扎县| 台江县| 绥宁县| 乐至县| 茌平县| 桂平市| 团风县| 南涧| 韩城市|