国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker Volume 看這一篇就夠了

這篇具有很好參考價值的文章主要介紹了Docker Volume 看這一篇就夠了。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Docker Volume


docker volume,docker,docker,容器,運(yùn)維

1. 簡介

默認(rèn)情況下,在容器內(nèi)創(chuàng)建的所有文件都存儲在可寫容器層上。這意味著:

  • 當(dāng)該容器不再存在時,數(shù)據(jù)不會持續(xù)存在,并且如果另一個進(jìn)程需要數(shù)據(jù),則可能很難將數(shù)據(jù)從容器中取出。
    容器的可寫層與運(yùn)行容器的主機(jī)緊密耦合。您無法輕松地將數(shù)據(jù)移動到其他地方。
  • 寫入容器的可寫層需要 存儲驅(qū)動程序來管理文件系統(tǒng)。存儲驅(qū)動程序提供了一個聯(lián)合文件系統(tǒng),使用 Linux
    內(nèi)核。與使用直接寫入主機(jī)文件系統(tǒng)的數(shù)據(jù)卷相比,這種額外的抽象會降低性能 。
  • Docker 有兩個選項讓容器在主機(jī)上存儲文件,以便即使在容器停止后文件也能持久保存:volumesbind mounts。

Docker 還支持將文件存儲在主機(jī)內(nèi)存中的容器。此類文件不會持久保存。如果您在 Linux 上運(yùn)行 Docker,則使用tmpfs mount將文件存儲在主機(jī)的系統(tǒng)內(nèi)存中。

掛載類型

  • volumes:由 Docker(/var/lib/docker/volumes/在 Linux 上)管理的主機(jī)文件系統(tǒng)的一部分中。非 Docker 進(jìn)程不應(yīng)修改文件系統(tǒng)的這一部分。卷是在 Docker 中持久化數(shù)據(jù)的最佳方式
  • bind mounts:可以存儲在主機(jī)系統(tǒng)的任何位置。它們甚至可能是重要的系統(tǒng)文件或目錄。Docker 主機(jī)或 Docker 容器上的非 Docker 進(jìn)程可以隨時修改它們。
  • tmpfs mounts:掛載僅存儲在主機(jī)系統(tǒng)的內(nèi)存中,永遠(yuǎn)不會寫入主機(jī)系統(tǒng)的文件系統(tǒng)

docker volume,docker,docker,容器,運(yùn)維

2. 原理

在 linux 系統(tǒng)上,docker 將images, containers, volumes等相關(guān)的數(shù)據(jù)存儲在/var/lib/docker下。
docker volume,docker,docker,容器,運(yùn)維
當(dāng)我們運(yùn)行docker build命令時,docker 會為 dockerfile 中的每條指令構(gòu)建一層。這些圖像層是只讀層。當(dāng)我們運(yùn)行docker run命令時,docker 會構(gòu)建容器層,它們是讀寫層。
docker volume,docker,docker,容器,運(yùn)維
您可以在容器上創(chuàng)建新文件,例如下圖中的temp.txt。您還可以修改容器上屬于圖像層的文件,例如下圖中的app.py。執(zhí)行此操作時,會在容器層上創(chuàng)建該文件的本地副本,并且更改僅存在于容器上——這稱為 Copy-on-Write 機(jī)制。這很重要,因為多個容器和子圖像使用相同的圖像層。容器上的文件的生命周期與容器的生命周期一樣長。當(dāng)容器被銷毀時,其上的文件/修改也會被銷毀。為了持久化數(shù)據(jù),我們可以使用我們在上一節(jié)中看到的卷映射技術(shù)。
docker volume,docker,docker,容器,運(yùn)維

3. 命令

您可以使用docker volume create命令創(chuàng)建 docker 卷。此命令將在/var/lib/docker/volumes目錄中創(chuàng)建一個卷。

docker volume create data_volume
docker volume ls
docker volume inspect data_volume

docker run命令時,您可以使用-v標(biāo)志指定要使用的卷。這稱為卷掛載。

docker run -v data_volume:/var/lib/postgres postgres

如果該卷不存在,docker 會為您創(chuàng)建一個?,F(xiàn)在,即使容器被銷毀,數(shù)據(jù)也會保留在卷中。

如果您想將數(shù)據(jù)放在 docker 主機(jī)上的特定位置或磁盤上已有數(shù)據(jù),您也可以將此位置掛載到容器上。這稱為綁定安裝。

docker run -v /data/postgres:/var/lib/postgres postgres

docker volume,docker,docker,容器,運(yùn)維
刪除

docker volume rm data_volume

4. 應(yīng)用

4.1 目錄 bind mount

echo "<h1>Hello from Host</h1>" > ./target/index.html
docker run -it --rm --name nginx -p 8080:80 -v "$(pwd)"/target:/usr/share/nginx/html nginx

訪問:http://localhost:8080/,您應(yīng)該會看到“Hello from Host”

4.2 隱式創(chuàng)建 Docker volume

#創(chuàng)建demo-earthly卷掛載
docker run -it --rm --name nginx -p 8080:80 -v demo-earthly:/usr/share/nginx/html nginx
docker volume ls
ls /var/lib/docker/volumes/target/_data/demo-earthly
#查看卷內(nèi)容
docker run -it --rm -v demo-earthly:/opt/demo-earthly ubuntu ls /opt/demo-earthly

docker volume,docker,docker,容器,運(yùn)維

4.3 顯式創(chuàng)建 Docker 卷

docker volume create --name demo-earthly  

4.4 從 Dockerfile 聲明一個 Docker 卷

可以使用語句在 Dockerfile 中聲明卷VOLUME

Dockerfile:

FROM nginx:latest

RUN echo "<h1>Hello from Volume</h1>" > /usr/share/nginx/html/index.html
VOLUME /usr/share/nginx/html

利用Dockerfile構(gòu)建鏡像

$ docker build -t demo-earthly .
$ docker run -p 8080:80  demo-earthly
$ docker volume ls
DRIVER              VOLUME NAME
local               20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281

$ docker volume inspect 20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281 
[
    {
        "CreatedAt": "2022-07-28T11:02:14+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281/_data",
        "Name": "20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281",
        "Options": null,
        "Scope": "local"
    }
]


$ docker inspect -f '{{ .Mounts }}' amazing_carson 
[{volume 20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281 /var/lib/docker/volumes/20879e3f0bfaf0eed63cb7f37c4b9545084a703f888a230b8aedc2082c836281/_data /usr/share/nginx/html local  true }]

每次啟動一個新容器時,都會創(chuàng)建另一個卷,內(nèi)容為/usr/share/nginx/html.

4.5 另一種方式掛載 mount 參數(shù)

-v并且–volume是使用以下語法將卷安裝到容器的最常見方法:

-v <name>:<destination>:<options>

該卷將以只讀方式安裝:

docker run -it -v demo-volume:/data:ro ubuntu

另一種方法-v是--mount選項添加到docker run命令中。–mount是 的更詳細(xì)的對應(yīng)物-v。
語法:

docker run --mount source=[volume_name],destination=[path_in_container] [docker_image]

示例

docker run -it --name=example --mount source=demo-volume,destination=/data ubuntu

4.6 使用配置卷 docker-compose

使用docker-compose命令在多個容器之間輕松共享數(shù)據(jù)更方便。

docker-compose.yml 目錄掛載

version: "3.2"
services:
  web:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - ./target:/usr/share/nginx/html

docker-compose.yml 創(chuàng)建卷

version: "3.2"
services:
  web:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - html_files:/usr/share/nginx/html
  web1:
    image: nginx:latest
    ports:
      - 8081:80
    volumes:
      - html_files:/usr/share/nginx/html
 
volumes:
  html_files:

聲明了一個名為并html_files在服務(wù)中使用它的卷。多個容器(web、web1)可以掛載同一個卷。

運(yùn)行docker-compose up將創(chuàng)建一個名為<project_name>_html_filesif 它不存在的卷。然后運(yùn)行docker volume ls以列出創(chuàng)建的兩個卷,從項目名稱開始。

您還可以在 docker-compose 文件之外管理容器,但您仍然需要在下面聲明它們volumes并設(shè)置屬性external: true。

version: "3.2"
services:
  web:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - html_files:/usr/share/nginx/html
 
volumes:
  html_files:
    external: true

如果你沒有html_files,你可以使用docker volume create html_files來創(chuàng)建它。當(dāng)你添加 時external,Docker 會找出卷是否存在;但如果沒有,就會報錯。

4.7 從共享卷在容器之間復(fù)制文件

創(chuàng)建容器并創(chuàng)建掛載卷

docker create volume demo-earthly
docker run -it --name=another-example --mount source=demo-volume,destination=/data ubuntu
root@ded392c589ea:/# touch /data/demo.txt

導(dǎo)航到數(shù)據(jù)卷目錄并使用命令創(chuàng)建一個文件touch demo.txt。退出容器,然后啟動一個another-example-two具有相同數(shù)據(jù)量的新容器:

docker run -it --name=another-example-two --mount source=demo-volume,destination=/data ubuntu
root@feef37293ea5:/# ls /data

參考:文章來源地址http://www.zghlxwxcb.cn/news/detail-786728.html

  • Manage data in Docker
  • Docker Storage
  • Understanding Docker Volumes
  • Guide to Docker Volumes

到了這里,關(guān)于Docker Volume 看這一篇就夠了的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    最近事多,好久沒更新了,隨便寫寫(Ctrl+V)點(diǎn) 一、超圖定義 通常圖論中的圖,一條edge只能連接2個vertex,在超圖中,不限量 如何理解呢,就用我正在做的KT問題來看:7道題目-7個頂點(diǎn);4種概念-4條超邊,其中第1,2,3題都是考察概念1的,則構(gòu)建一個包含了這仨的超邊,以此類

    2024年02月02日
    瀏覽(27)
  • SourceTree使用看這一篇就夠了

    SourceTree使用看這一篇就夠了

    ?你夢想有一天成為git大師,然而面對復(fù)雜的git命令,你感覺TMD這我能記得住嗎?你曾經(jīng)羨慕從命令行敲git命令,才會更加炫酷,然而時間一長,TMD命令我有忘了。那么今天我介紹的這款工具會讓你從git命令中解救出來,這就是git可視化工具SourcTree。 事實上Git的功能十分強(qiáng)大

    2024年02月08日
    瀏覽(23)
  • CAS自旋鎖,看這一篇就夠了

    前序 時隔多年,杰倫終于出了新專輯,《最偉大的作品》讓我們穿越到1920年,見到了馬格利特的綠蘋果、大利的超現(xiàn)實、常玉畫的大腿、莫奈的睡蓮、徐志摩的詩… 他說“最偉大的作品”并不是自己的歌,而是這個世界上最偉大的藝術(shù)作品們。 為什么要寫CAS自旋鎖呢?最近

    2023年04月08日
    瀏覽(19)
  • 還不會拓?fù)渑判??看這一篇就夠了

    還不會拓?fù)渑判??看這一篇就夠了

    拓?fù)渑判蚴且环N有向無環(huán)圖(DAG)的頂點(diǎn)排序方法,它將一個有向無環(huán)圖中的所有頂點(diǎn)排成一個線性序列,使得圖中 任意一條有向邊上的起點(diǎn)排在終點(diǎn)的前面 。 這樣說還不夠具體,我們先來看一個例子。假設(shè)某大學(xué)的課程安排如下: 課程編號 課程名稱 先修課程 1 1 1 高等數(shù)

    2023年04月08日
    瀏覽(74)
  • 還不會二分查找?看這一篇就夠了

    還不會二分查找?看這一篇就夠了

    二分查找分為整數(shù)二分和浮點(diǎn)數(shù)二分,一般所說的二分查找都是指整數(shù)二分。 滿足單調(diào)性的數(shù)組一定可以使用二分查找,但可以使用二分查找的數(shù)組不一定需要滿足單調(diào)性。 不妨假設(shè)我們找到了條件 C 1 C_1 C 1 ? ,它和它的 對立條件 C 2 C_2 C 2 ? 能夠?qū)?shù)組 a a a 一分為二,

    2024年01月19日
    瀏覽(27)
  • Docker快速部署RabbitMq教程,這一篇就夠了!

    Docker快速部署RabbitMq教程,這一篇就夠了!

    目錄 1、拉取RabbitMQ鏡像 2、創(chuàng)建RabbitMQ容器? 3、驗證是否安裝成功 4、后臺管理頁面無法打開問題 要快速部署RabbitMQ,可以使用Docker容器來簡化過程。下面是使用Docker快速部署RabbitMQ的教程。 1、拉取RabbitMQ鏡像 在終端中執(zhí)行以下命令,拉取RabbitMQ的鏡像到本地: 注意:在此處

    2024年03月21日
    瀏覽(19)
  • C++異常處理詳解 看這一篇就夠了

    C++異常處理詳解 看這一篇就夠了

    在程序運(yùn)行的過程中,我們不可能保證我們的程序百分百不出現(xiàn)異常和錯誤,那么出現(xiàn)異常時該怎么報錯,讓我們知道是哪個地方錯誤了呢? C++中就提供了異常處理的機(jī)制。 throw : 當(dāng)問題出現(xiàn)時,程序會拋出一個異常。這是通過使用 throw 來完成的。 catch : 在您想要處理

    2024年02月14日
    瀏覽(30)
  • Java迭代器詳解,看這一篇就夠了

    Java迭代器詳解,看這一篇就夠了

    迭代器 是屬于 設(shè)計模式 之一, 迭代器模式 提供了一種方法來順序訪問一個聚合對象中各個元素,而不保留該對象的內(nèi)部表示。 1) Iterator對象 稱為 迭代器 ,主要用于遍歷 Collection集合 中的元素。 2)所有實現(xiàn)了 Collection接口 的集合類都有一個 iterator() 方法,用以返回一個

    2024年02月02日
    瀏覽(21)
  • 關(guān)于Tacotron2看這一篇就夠了

    關(guān)于Tacotron2看這一篇就夠了

    文章來源 [1712.05884] NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS 參考博客 聲譜預(yù)測網(wǎng)絡(luò)(Tacotron2) Tacotron2 論文 + 代碼詳解 Tacotron2講解 論文閱讀 Tacotron2 Tacotron2 模型詳解 Tacotron2-Details 簡介: The system is composed of a recurrent sequence-to-sequence feature prediction network that m

    2024年02月09日
    瀏覽(19)
  • 背包問題(動態(tài)規(guī)劃看這一篇就夠了)

    背包問題(動態(tài)規(guī)劃看這一篇就夠了)

    題目描述 ????一個旅行者有一個最多能裝M公斤的背包,現(xiàn)在有n件物品,他們的重量分別是W1,W2,......,Wn,他們的價值分別是C1,C2,......,Cn,求旅行者能獲得的最大總價值。 輸入 ????第一行:兩個整數(shù),M(M=200)和N(N=30); ????第2至N+1行:每行兩個整數(shù)Wi,Ci,表示每

    2024年04月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包