日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

目錄
  • Docker實(shí)現(xiàn)掛載的方式
    • 一、通過(guò)docker run命令
    • 二、通過(guò)dockerfile創(chuàng)建掛載點(diǎn)
    • 三、容器共享卷(掛載點(diǎn))
    • 四、最佳實(shí)踐:數(shù)據(jù)容器
  • 關(guān)于Docker中掛載的解釋
    • 總結(jié)

      Docker實(shí)現(xiàn)掛載的方式

      在介紹VOLUME指令之前,我們來(lái)看下如下場(chǎng)景需求:

      1.容器是基于鏡像創(chuàng)建的,最后的容器文件系統(tǒng)包括鏡像的只讀層+可寫(xiě)層,容器中的進(jìn)程操作的數(shù)據(jù)持久化都是保存在容器的可寫(xiě)層上。一旦容器刪除后,這些數(shù)據(jù)就沒(méi)了,除非我們?nèi)斯浞菹聛?lái)(或者基于容器創(chuàng)建新的鏡像)。能否可以讓容器進(jìn)程持久化的數(shù)據(jù)保存在主機(jī)上呢?這樣即使容器刪除了,數(shù)據(jù)還在。

      2. 當(dāng)我們?cè)陂_(kāi)發(fā)一個(gè)web應(yīng)用時(shí),開(kāi)發(fā)環(huán)境是在主機(jī)本地,但運(yùn)行測(cè)試環(huán)境是放在docker容器上。這樣的話,我在主機(jī)上修改文件(如html,js等)后,需要再同步到容器中。這顯然比較麻煩。

      3. 多個(gè)容器運(yùn)行一組相關(guān)聯(lián)的服務(wù),如果他們要共享一些數(shù)據(jù)怎么辦?

      對(duì)于這些問(wèn)題,我們當(dāng)然能想到各種解決方案。而docker本身提供了一種機(jī)制,可以將主機(jī)上的某個(gè)目錄與容器的某個(gè)目錄(稱為掛載點(diǎn)、或者叫卷)關(guān)聯(lián)起來(lái),容器上的掛載點(diǎn)下的內(nèi)容就是主機(jī)的這個(gè)目錄下的內(nèi)容,這類似linux系統(tǒng)下mount的機(jī)制。 這樣的話,我們修改主機(jī)上該目錄的內(nèi)容時(shí),不需要同步容器,對(duì)容器來(lái)說(shuō)是立即生效的。 掛載點(diǎn)可以讓多個(gè)容器共享。

      下面我們來(lái)介紹具體的實(shí)現(xiàn)機(jī)制。

      一、通過(guò)docker run命令

      1.運(yùn)行命令:docker run –name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash

      其中的 -v 標(biāo)記 在容器中設(shè)置了一個(gè)掛載點(diǎn) /data(就是容器中的一個(gè)目錄),并將主機(jī)上的 /home/xqh/myimage 目錄中的內(nèi)容關(guān)聯(lián)到 /data下。

      這樣在容器中對(duì)/data目錄下的操作,還是在主機(jī)上對(duì)/home/xqh/myimage的操作,都是完全實(shí)時(shí)同步的,因?yàn)檫@兩個(gè)目錄實(shí)際都是指向主機(jī)目錄。

      2.運(yùn)行命令:docker run –name test1 -it -v /data ubuntu /bin/bash

      上面-v的標(biāo)記只設(shè)置了容器的掛載點(diǎn),并沒(méi)有指定關(guān)聯(lián)的主機(jī)目錄。這時(shí)docker會(huì)自動(dòng)綁定主機(jī)上的一個(gè)目錄。通過(guò)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下的每條信息記錄了容器上一個(gè)掛載點(diǎn)的信息,“Destination” 值是容器的掛載點(diǎn),"Source"值是對(duì)應(yīng)的主機(jī)目錄。可以看出這種方式對(duì)應(yīng)的主機(jī)目錄是自動(dòng)創(chuàng)建的,其目的不是讓在主機(jī)上修改,而是讓多個(gè)容器共享。

      二、通過(guò)dockerfile創(chuàng)建掛載點(diǎn)

      上面介紹的通過(guò)docker run命令的-v標(biāo)識(shí)創(chuàng)建的掛載點(diǎn)只能對(duì)創(chuàng)建的容器有效。通過(guò)dockerfile的 VOLUME 指令可以在鏡像中創(chuàng)建掛載點(diǎn),這樣只要通過(guò)該鏡像創(chuàng)建的容器都有了掛載點(diǎn)。

      還有一個(gè)區(qū)別是,通過(guò) VOLUME 指令創(chuàng)建的掛載點(diǎn),無(wú)法指定主機(jī)上對(duì)應(yīng)的目錄,是自動(dòng)生成的。

      #test
      FROM ubuntu
      MAINTAINER hello1
      VOLUME ["/data1","/data2"]

      上面的dockfile文件通過(guò)VOLUME指令指定了兩個(gè)掛載點(diǎn) /data1 和 /data2.

      我們通過(guò)docker inspect 查看通過(guò)該dockerfile創(chuàng)建的鏡像生成的容器,可以看到如下信息

      "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
      ? ? }
      ],

      可以看到兩個(gè)掛載點(diǎn)的信息。

      三、容器共享卷(掛載點(diǎn))

      下面我們創(chuàng)建另一個(gè)容器可以和test1(已經(jīng)創(chuàng)建好的容器)共享 /data1 和 /data2卷,這是在 docker run中使用 –volumes-from標(biāo)記,如:

      可以是來(lái)源不同鏡像,如:

      docker run --name test2 -it --volumes-from test1 ubuntu /bin/bash

      也可以是同一鏡像,如:

      docker run --name test3 -it --volumes-from test1 myimage /bin/bash

      上面的三個(gè)容器 test1 , test2 , test3 均有 /data1 和 /data2 兩個(gè)目錄,且目錄中內(nèi)容是共享的,任何一個(gè)容器修改了內(nèi)容,別的容器都能獲取到。

      四、最佳實(shí)踐:數(shù)據(jù)容器

      如果多個(gè)容器需要共享數(shù)據(jù)(如持久化數(shù)據(jù)庫(kù)、配置文件或者數(shù)據(jù)文件等),可以考慮創(chuàng)建一個(gè)特定的數(shù)據(jù)容器,該容器有1個(gè)或多個(gè)卷。

      其它容器通過(guò)–volumes-from 來(lái)共享這個(gè)數(shù)據(jù)容器的卷。

      因?yàn)槿萜鞯木肀举|(zhì)上對(duì)應(yīng)主機(jī)上的目錄,所以這個(gè)數(shù)據(jù)容器也不需要啟動(dòng)。

      如: docker run –name dbdata myimage echo “data container”

      說(shuō)明:有個(gè)卷,容器之間的數(shù)據(jù)共享比較方便,但也有很多問(wèn)題需要解決,如權(quán)限控制、數(shù)據(jù)的備份、卷的刪除等。以后在介紹。

      關(guān)于Docker中掛載的解釋

      現(xiàn)在有這么一個(gè)命令:

      docker run -p 33061:3306 --name mysql ?--restart=always -e MYSQL_ROOT_PASSWORD=pisen ?-v /etc/localtime:/etc/localtime:ro ?-v /etc/timezone:/etc/timezone:ro ?-d mysql:5.7

      因?yàn)橹匾f(shuō)掛載的問(wèn)題,就單獨(dú)揪出來(lái)參數(shù)來(lái)說(shuō)

      -v /etc/localtime:/etc/localtime:ro

      就是將  宿主機(jī)的/etc/localtime文件掛載到容器的/etc/localtime 文件,并且容器內(nèi)的/etc/localtime文件設(shè)置為只讀(:ro)

      實(shí)際的效果就是mysql容器啟動(dòng)后,時(shí)間時(shí)區(qū)的設(shè)置,使用的就是宿主機(jī)的 /etc/localtime 文件內(nèi)設(shè)置的內(nèi)容起作用。

      如果沒(méi)有設(shè)置只讀的情況下,該掛載實(shí)現(xiàn)的效果是:

      情況1:使用echo命令去修改

      echo 'lq' > timezone

      無(wú)論更改宿主機(jī)上的/etc/localtime文件內(nèi)容還是修改容器內(nèi)的/etc/localtime文件內(nèi)容,都會(huì)影響到對(duì)方。  

      情況2:使用vi命令去修改

      vi timezone

      則無(wú)論修改哪邊都不會(huì)影響到另外一方的文件內(nèi)容。

      總結(jié)

      以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。

      分享到:
      標(biāo)簽:Docker 三種 方式 服務(wù)器 匯總
      用戶無(wú)頭像

      網(wǎng)友整理

      注冊(cè)時(shí)間:

      網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

      • 51998

        網(wǎng)站

      • 12

        小程序

      • 1030137

        文章

      • 747

        會(huì)員

      趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
      最新入駐小程序

      數(shù)獨(dú)大挑戰(zhàn)2018-06-03

      數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

      答題星2018-06-03

      您可以通過(guò)答題星輕松地創(chuàng)建試卷

      全階人生考試2018-06-03

      各種考試題,題庫(kù),初中,高中,大學(xué)四六

      運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

      記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

      每日養(yǎng)生app2018-06-03

      每日養(yǎng)生,天天健康

      體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

      通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定