国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

淺談docker Dockerfile 指令 VOLUME 介紹

2019-11-02 16:03:34
字體:
來源:轉載
供稿:網友

在介紹VOLUME指令之前,我們來看下如下場景需求:

1)容器是基于鏡像創建的,最后的容器文件系統包括鏡像的只讀層+可寫層,容器中的進程操作的數據持久化都是保存在容器的可寫層上。一旦容器刪除后,這些數據就沒了,除非我們人工備份下來(或者基于容器創建新的鏡像)。能否可以讓容器進程持久化的數據保存在主機上呢?這樣即使容器刪除了,數據還在。

2)當我們在開發一個web應用時,開發環境是在主機本地,但運行測試環境是放在docker容器上。

這樣的話,我在主機上修改文件(如html,js等)后,需要再同步到容器中。這顯然比較麻煩。

3)多個容器運行一組相關聯的服務,如果他們要共享一些數據怎么辦?

對于這些問題,我們當然能想到各種解決方案。而docker本身提供了一種機制,可以將主機上的某個目錄與容器的某個目錄(稱為掛載點、或者叫卷)關聯起來,容器上的掛載點下的內容就是主機的這個目錄下的內容,這類似linux系統下mount的機制。 這樣的話,我們修改主機上該目錄的內容時,不需要同步容器,對容器來說是立即生效的。 掛載點可以讓多個容器共享。

下面我們來介紹具體的機制。

一、通過docker run命令

1、運行命令:docker run --name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash

其中的 -v 標記 在容器中設置了一個掛載點 /data(就是容器中的一個目錄),并將主機上的 /home/xqh/myimage 目錄中的內容關聯到 /data下。

這樣在容器中對/data目錄下的操作,還是在主機上對/home/xqh/myimage的操作,都是完全實時同步的,因為這兩個目錄實際都是指向主機目錄。

2、運行命令:docker run --name test1 -it -v /data ubuntu /bin/bash

上面-v的標記只設置了容器的掛載點,并沒有指定關聯的主機目錄。這時docker會自動綁定主機上的一個目錄。通過docker inspect 命令可以查看到。

xqh@ubuntu:~/myimage$ docker inspect test1[{  "Id": "1fd6c2c4bc545163d8c5c5b02d60052ea41900a781a82c20a8f02059cb82c30c",.............................  "Mounts": [    {      "Name": "0ab0aaf0d6ef391cb68b72bd8c43216a8f8ae9205f0ae941ef16ebe32dc9fc01",      "Source": "/var/lib/docker/volumes/0ab0aaf0d6ef391cb68b72bd8c43216a8f8ae9205f0ae941ef16ebe32dc9fc01/_data",      "Destination": "/data",      "Driver": "local",      "Mode": "",      "RW": true    }  ],...........................

上面 Mounts下的每條信息記錄了容器上一個掛載點的信息,"Destination" 值是容器的掛載點,"Source"值是對應的主機目錄。

可以看出這種方式對應的主機目錄是自動創建的,其目的不是讓在主機上修改,而是讓多個容器共享。

二、通過dockerfile創建掛載點

上面介紹的通過docker run命令的-v標識創建的掛載點只能對創建的容器有效。

通過dockerfile的 VOLUME 指令可以在鏡像中創建掛載點,這樣只要通過該鏡像創建的容器都有了掛載點。

還有一個區別是,通過 VOLUME 指令創建的掛載點,無法指定主機上對應的目錄,是自動生成的。

#testFROM ubuntuMAINTAINER hello1VOLUME ["/data1","/data2"]

上面的dockfile文件通過VOLUME指令指定了兩個掛載點 /data1 和 /data2.

我們通過docker inspect 查看通過該dockerfile創建的鏡像生成的容器,可以看到如下信息

  "Mounts": [    {      "Name": "d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21",      "Source": "/var/lib/docker/volumes/d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21/_data",      "Destination": "/data1",      "Driver": "local",      "Mode": "",      "RW": true    },    {      "Name": "6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36",      "Source": "/var/lib/docker/volumes/6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36/_data",      "Destination": "/data2",      "Driver": "local",      "Mode": "",      "RW": true    }  ],
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三门峡市| 克拉玛依市| 延长县| 长春市| 崇州市| 仪陇县| 石家庄市| 建湖县| 孝感市| 琼海市| 桓台县| 涿鹿县| 乌拉特中旗| 田东县| 阜新市| 抚松县| 龙口市| 天长市| 曲沃县| 云和县| 那坡县| 富锦市| 随州市| 唐河县| 眉山市| 承德县| 大宁县| 扎鲁特旗| 华蓥市| 隆德县| 县级市| 耒阳市| 德庆县| 黔西县| 自贡市| 常山县| 黄龙县| 汝州市| 兰州市| 平安县| 南丰县|