成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 如何給一個正在運(yùn)行的Docker容器動態(tài)添加Volume

如何給一個正在運(yùn)行的Docker容器動態(tài)添加Volume

熱門標(biāo)簽:如何在各種地圖標(biāo)注自己的地址 申請400電話號碼多少錢 營銷電銷機(jī)器人招商 信陽銷售外呼系統(tǒng)招商 物超所值的400電話申請 coreldraw地圖標(biāo)注 菏澤crm外呼系統(tǒng)價格 遼寧電銷平臺外呼系統(tǒng)軟件 百應(yīng)電銷機(jī)器人靠譜嗎

之前有人問我Docker容器啟動之后還能否再掛載卷,考慮mnt命名空間的工作原理,我一開始認(rèn)為這很難實(shí)現(xiàn)。不過現(xiàn)在我認(rèn)為是它實(shí)現(xiàn)的。

  • 簡單來說,要想將磁盤卷掛載到正在運(yùn)行的容器上,我們需要:
  • 使用nsenter將包含這個磁盤卷的整個文件系統(tǒng)mount到臨時掛載點(diǎn)上;
  • 從我們想當(dāng)作磁盤卷使用的特定文件夾中創(chuàng)建綁定掛載(bind mount)到這個磁盤卷的位置;

umount第一步創(chuàng)建的臨時掛載點(diǎn)。

注意事項

在下面的示例中,我故意包含了$符號來表示這是Shell命令行提示符,以幫助大家區(qū)分哪些是你需要輸入的,哪些是機(jī)器回復(fù)的。有一些多行命令,我也繼續(xù)用>。我知道這樣使得例子里的命令無法輕易得被拷貝粘貼。如果你想要拷貝粘貼代碼,請查看文章最后的示例腳本。

詳細(xì)步驟

下面示例的前提是你已經(jīng)使用如下命令啟動了一個簡單的名為charlie的容器:

$ docker run --name charlie -ti ubuntu bash

我們需要做的是將宿主文件夾/home/jpetazzo/Work/DOCKER/docker掛載到容器里的/src目錄。好了,讓我們開始吧。

nsenter

首先,我們需要nsenter以及docker-enter幫助腳本。為什么?因為我們要從容器中mount文件系統(tǒng)。由于安全性的考慮,容器不允許我們這么做。使用nsenter,我們可以突破上述安全限制,在容器的上下文(嚴(yán)格地說,是命名空間)中運(yùn)行任意命令。當(dāng)然,這必須要求擁有Docker宿主機(jī)的root權(quán)限。

nsenter最簡單的安裝方式是和docker-enter腳本關(guān)聯(lián)執(zhí)行:

$ docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

更多細(xì)節(jié),請查看nsenter項目主頁。

找到文件系統(tǒng)

我們想要在容器里掛載包含宿主文件夾(/home/jpetazzo/Work/DOCKER/docker)的文件系統(tǒng)。那我們就需要找出哪個文件系統(tǒng)包含這個目錄。

首先,我們需要canonicalize(或者解除引用)文件,以防這是一個符號鏈接,或者它的路徑包含符號鏈接:

$ readlink --canonicalize /home/jpetazzo/Work/DOCKER/docker
/home/jpetazzo/go/src/github.com/docker/docker

哈,這的確是一個符號鏈接!讓我們將其放入一個環(huán)境變量中:

$ HOSTPATH=/home/jpetazzo/Work/DOCKER/docker
$ REALPATH=$(readlink --canonicalize $HOSTPATH)

接下來,我們需要找出哪個文件系統(tǒng)包含這個路徑。我們使用一個有點(diǎn)讓人意想不到的工具來做,它就是df:

$ df $REALPATH
Filesystem   1K-blocks   Used Available Use% Mounted on
/sda2     245115308 156692700 86157700 65% /home/jpetazzo

使用-P參數(shù)(強(qiáng)制使用POSIX格式,以防是exotic df,或者是其他人在Solaris或者BSD系統(tǒng)上裝Docker時運(yùn)行的df),將結(jié)果也放到一個變量里:

$ FILESYS=$(df -P $REALPATH | tail -n 1 | awk '{print $6}')

找到文件系統(tǒng)的設(shè)備(和sub-root)

現(xiàn)在,系統(tǒng)里已經(jīng)沒有綁定掛載(bind mounts)和BTRFS子卷了,我們僅僅需要查看/proc/mounts,找到對應(yīng)于/home/jpetazzo文件系統(tǒng)的設(shè)備就可以了。但是在我的系統(tǒng)里,/home/jpetazzo是BTRFS池的子卷,要想得到子卷的信息(或者bind mount信息),需要查看/proc/self/moutinfo。

如果你從來沒有聽說過mountinfo,可以查看內(nèi)核文檔的proc.txt。

首先,得到文件系統(tǒng)設(shè)備信息:

$ while read DEV MOUNT JUNK
> do [ $MOUNT = $FILESYS ] && break
> done </proc/mounts
$ echo $DEV
/dev/sda2

接下來,得到sub-root信息(比如,已掛載文件系統(tǒng)的路徑):

$ while read A B C SUBROOT MOUNT JUNK
> do [ $MOUNT = $FILESYS ] && break
> done < /proc/self/mountinfo 
$ echo $SUBROOT
/jpetazzo

很好?,F(xiàn)在我們知道需要掛載/dev/sda2。在文件系統(tǒng)內(nèi)部,進(jìn)入/jpetazzo,從這里可以得到到所需文件的剩余路徑(示例中是/go/src/github.com/docker/docker)。
讓我們計算出剩余路徑:

$ SUBPATH=$(echo $REALPATH | sed s,^$FILESYS,,)

注意:這個方法只適用于路徑里沒有符號“,”的。如果你的路徑里有“,”并且想使用本文方法掛載目錄,請告訴我。(我需要調(diào)用Shell Triad來解決這個問題:jessie,soulshake,tianon?)

在進(jìn)入容器之前最后需要做的是找到這個塊設(shè)備的主和次設(shè)備號??梢允褂胹tat:

$ stat --format "%t %T" $DEV
8 2

注意這兩個數(shù)字是十六進(jìn)制的,我們之后需要的是二進(jìn)制。可以這么轉(zhuǎn)換:

$ DEVDEC=$(printf "%d %d" $(stat --format "0x%t 0x%T" $DEV))

總結(jié)

還有最后一步。因為某些我無法解釋的原因,一些文件系統(tǒng)(包括BTRFS)在掛載多次之后會更新/proc/mounts里面的設(shè)備字段。也就是說,如果我們在容器里創(chuàng)建了名為/tmpblkdev的臨時塊設(shè)備,并用其掛載我們自己的文件系統(tǒng),那么文件系統(tǒng)(在宿主機(jī)器里?。@示為/tmpblkdev,而不是/dev/sda2。這聽起來無所謂,但實(shí)際上這會讓之后試圖得到文件系統(tǒng)塊設(shè)備的操作都失敗。

長話短說,我們想要確保塊設(shè)備節(jié)點(diǎn)在容器里位于和宿主機(jī)器上的同一個路徑下。

需要這么做:

$ docker-enter charlie -- sh -c \

> "[ -b $DEV ] || mknod --mode 0600 $DEV b $DEVDEC"

創(chuàng)建臨時掛載點(diǎn)掛載文件系統(tǒng):

$ docker-enter charlie -- mkdir /tmpmnt
$ docker-enter charlie -- mount $DEV /tmpmnt

確保卷掛載點(diǎn)存在,bind mount卷:

$ docker-enter charlie -- mkdir -p /src
$ docker-enter charlie -- mount -o bind /tmpmnt/$SUBROOT/$SUBPATH /src

刪除臨時掛載點(diǎn):

$ docker-enter charlie -- umount /tmpmnt
$ docker-enter charlie -- rmdir /tmpmnt

(我們并不清除設(shè)備節(jié)點(diǎn)。一開始就檢查設(shè)備是否存在可能有點(diǎn)多余,但是現(xiàn)在再檢查就已經(jīng)很復(fù)雜了。)

大功告成!

讓一切自動化

下面這段可以直接拷貝粘貼了。

#!/bin/sh
set -e
CONTAINER=charlie
HOSTPATH=/home/jpetazzo/Work/DOCKER/docker
CONTPATH=/src

REALPATH=$(readlink --canonicalize $HOSTPATH)
FILESYS=$(df -P $REALPATH | tail -n 1 | awk '{print $6}')

while read DEV MOUNT JUNK
do [ $MOUNT = $FILESYS ] && break 
done </proc/mounts
[ $MOUNT = $FILESYS ] # Sanity check!

\while read A B C SUBROOT MOUNT JUNK
\do [ $MOUNT = $FILESYS ] && break
\done < /proc/self/mountinfo 
[ $MOUNT = $FILESYS ] # Moar sanity check!

SUBPATH=$(echo $REALPATH | sed s,^$FILESYS,,)
DEVDEC=$(printf "%d %d" $(stat --format "0x%t 0x%T" $DEV))

docker-enter $CONTAINER -- sh -c \

   "[ -b $DEV ] || mknod --mode 0600 $DEV b $DEVDEC"
docker-enter $CONTAINER -- mkdir /tmpmnt
docker-enter $CONTAINER -- mount $DEV /tmpmnt
docker-enter $CONTAINER -- mkdir -p $CONTPATH
docker-enter $CONTAINER -- mount -o bind /tmpmnt/$SUBROOT/$SUBPATH $CONTPATH
docker-enter $CONTAINER -- umount /tmpmnt
docker-enter $CONTAINER -- rmdir /tmpmnt

狀態(tài)和限制

上述方法不適用于不基于塊設(shè)備的文件系統(tǒng),只有在/proc/mounts能正確得到塊設(shè)備節(jié)點(diǎn)(上面談到,并不總是能正確得到)的時候才能起作用。另外,我只測試了我自己的環(huán)境,沒有在云實(shí)例之類的環(huán)境里測試過,但是我很想知道在那里是否適用。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:內(nèi)江 泰安 瀘州 江門 玉樹 湖北 江西 廈門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何給一個正在運(yùn)行的Docker容器動態(tài)添加Volume》,本文關(guān)鍵詞  如何,給,一個,正在,運(yùn),行的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何給一個正在運(yùn)行的Docker容器動態(tài)添加Volume》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何給一個正在運(yùn)行的Docker容器動態(tài)添加Volume的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本三级免费观看| 在线看av网址| 欧美 日韩 精品| 蜜桃在线一区| 伦理天堂电影| 五月天亚洲精品| 污污网站在线观看| caoporn成人免费视频在线| 欧美日韩aaaa| 日韩一级免费观看| 黄色免费在线看| 国产视频99| 日韩男女性生活视频| 日本熟妇色xxxxx日本免费看| 97在线国产视频| 奇米成人av国产一区二区三区| 免费电影视频在线看| 99久久久久久久| 99久久精品国产一区二区三区| 超碰在线caoporen| 国产欧美日韩免费看aⅴ视频| 亚洲永久精品视频| 欧美日韩国产美女| 亚洲成人精品一区| 一本本久综合久久爱| 五月婷婷综合久久| 91小仙女jk白丝袜呻吟| 国产欧美精品在线播放| 国产精品久久久久久久久电影网| 亚洲第一区第一页| 亚洲成人精品av| 亚洲男人的天堂网站| 成人h动漫精品一区二| 成人在线观看www| 男人操女人免费| 免费在线一级视频| 久久婷婷麻豆| 欧美高清精品3d| 欧美高清hd| 欧美成人黑人xx视频免费观看| 黄网在线观看网址入口| 成人免费看片98| 久久在线精品视频| 国产精品www在线观看| 日韩精品丝袜在线| 国产系列在线观看| av男人的天堂在线| 污污的网站在线观看| 国内精品视频666| 亚洲精品www久久久久久广东| 成人午夜视频免费观看| 桃乃木香奈和黑人aⅴ在线播放| 亚洲国产精品免费| 嗯~啊~轻一点视频日本在线观看| 日韩成人黄色av| 国产精品久久久久久久久电影网| 国产精品久久久99| 国产精选在线| 国产一区二区美女诱惑| 日韩av久操| 中国一级片在线观看| 牛牛在线精品视频| 五月天六月丁香| 日韩欧美精品三级| 小视频在线播放| 亚洲xxx视频| 波多野结衣办公室33分钟| 中文字幕免费国产精品| 捆绑调教美女网站视频一区| 中文字幕在线2021| 欧美日韩性视频在线| 91人成网站www| 中文字幕第22页| 亚洲国产91色在线| 中文字幕欧美日韩精品| 黑人巨大精品欧美一区二区桃花岛| 蜜桃视频无码区在线观看| 精品视频网站| 天堂一区二区在线免费观看| 亚洲午夜免费视频| 欧美xxxx黑人又粗又长精品| 路边理发店露脸熟妇泻火| 日韩精品视频一区二区| 亚洲午夜一区| 欧美三级 欧美一级| 国产精品三级久久久久久电影| 国产二级c片l毛片| 福利视频理论电影| 日韩精品久久久久久久电影99爱| 亚洲一区二区视频在线| 欧美三级不卡| 欧美日本国产一区| 久久精品欧美日韩精品| 99精品免费网| 精产国品自在线www| 国产伦精品一区二区三区四区视频| 春意影院免费入口| 自拍视频一区二区三区| 蜜桃视频在线观看播放| 日本黄色大片在线观看| theporn国产精品| 4虎在线播放1区| 成人午夜激情| 色婷婷av一区二区| 亚洲成色在线综合网站2018站| 影视先锋av资源站| 91精品国自产| 色婷婷777777仙踪林| 中文字幕无线码一区| 精品视频在线观看| 污污视频在线看| 日韩av手机在线看| 国产不卡视频| 精品福利一区二区| 欧美一区中文字幕| 日韩欧美中文第一页| av网站免费在线| 国产精品91久久久久久| 中文字幕在线观看视频网站| 99久久国产综合精品女不卡| 欧美疯狂性受xxxxx另类| 一二三四日本中文字幕| 伊人久久噜噜噜躁狠狠躁| 日韩福利电影在线观看| 在线成人免费视频| 国产女人被狂躁到高潮小说| 三级做a全过程在线观看| 亚洲精品中文字幕在线观看| 久久影院一区二区| 亚洲国产精品成人综合色在线婷婷| 57pao成人永久免费| 欧美巨大黑人极品精男| 高清hd写真福利在线播放| 国产精品狼人久久影院观看方式| 欧美激情精品久久久六区热门| 第一站视频久草网| 久久品道一品道久久精品| 在线观看麻豆蜜桃| 中文字幕日本不卡| 永久免费看片视频教学| 国产一卡2卡3卡四卡网站| www一区二区| 一级特黄录像免费播放全99| 国产精品久久久久久久久久久久久久| 国产精品成人a在线观看| 黄色一级视频片| 一区二区三区 欧美| 一级在线免费观看| 久久精品亚洲94久久精品| 日本一区二区三区视频在线播放| 日韩电影免费观看在线观看| 希岛爱理中文字幕| 一级性生活毛片| 欧美综合在线第二页| 九九热精品视频在线播放| 一级特黄aaaaaa大片| 97免费资源站| 成人高清在线观看免费| 成人影视在线播放| 欧美精品一区男女天堂| 国语对白在线播放| 日韩欧美国产黄色| 中文字幕免费在线看| 做爰视频毛片视频| 国产在线观看免费一区| 中文字幕另类日韩欧美亚洲嫩草| 大桥未久女教师av一区二区| 欧美日本在线一区| www久久久久久| 无遮挡爽大片在线观看视频| 日韩一级片大全| 日产精品久久久一区二区福利| 亚洲天堂中文字幕在线观看| 久热国产视频| 中文字幕日韩精品在线观看| 青青青在线视频免费观看| 日韩精品视频在线播放| 在线视频国内自拍亚洲视频| 国产成人福利片| 亚洲色欲综合一区二区三区| 日本不卡视频在线播放| h网站在线观看| 国产一区二区精彩视频| 亚洲不卡1区| 日韩一区二区三区免费| 亚洲国产av一区| 国产女主播喷水视频在线观看| 欧美激情一区不卡| **国产精品| 精品欧美国产一区二区三区不卡| 国产乱子伦一区二区三区国色天香| 不卡视频在线观看| 中国美女乱淫免费看视频| 风间由美中文字幕在线看视频国产欧美| 久久一区二区电影| 91成人抖音| sihu影院永久在线影院| 亚洲精品极品少妇16p| 亚洲美女福利视频网站| 日本黄网站色大片免费观看| jjzzjjzz欧美69巨大| 二区三区偷拍浴室洗澡视频| 乱熟女高潮一区二区在线| 最近中文字幕免费在线观看| av先锋资源网| 无码人妻aⅴ一区二区三区玉蒲团| 中文字幕一区图| 伊人久久大香线蕉| 午夜日韩视频| 久久人人超碰| 999精彩视频| 中字幕一区二区三区乱码| 国产极品jizzhd欧美| www.成人精品免费网站青椒| 九九久久九九| 欧美性色视频在线| 精品国产一区二区三区四区四| 91在线国内视频| 精品欧美一区二区在线观看| 欧美日韩不卡中文字幕在线| 中文字幕av一区二区三区四区| 午夜免费久久久久| 四虎影院成人在线观看| 国产精品亚洲视频| 成年人黄视频网站| 国产最新视频在线观看| 成人亚洲一区二区| 少妇大叫太粗太大爽一区二区| 亚洲一区二区三区观看| 一级做a爰片性色毛片视频| 国产日韩一级片| av资源中文色综合| 日韩精品一区二区三| 最近免费中文字幕大全免费版视频| 国产成人综合亚洲91猫咪| 国产亚洲精品中文字幕| 久久久久久久久久久久网站| 国产一级片中文字幕| av基地在线| 黄色一级片免费的| 国产成人精品1024| 伊人免费在线观看高清版| 色偷偷偷综合中文字幕;dd| 国产色视频在线播放| 天天操天天干天天| 中日韩精品一区二区三区| 日本美女视频一区二区| av动漫免费观看| 欧美一区电影| 日本女人黄色片| 日韩三级在线播放| 久久久久久久久久久人体| 日本成人在线视频网站| 四虎影视最新网址| 日本综合一区二区三区| 日韩一区二区三免费高清在线观看| 国产精品毛片一区二区在线看| 中文字幕乱妇无码av在线| 偷拍国模大尺度视频在线播放| 先锋影音欧美四级| sese一区| 最近中文字幕在线免费观看| 91小视频免费观看| 久久精品视频在线| 国产欧美精品国产国产专区| 国产原创视频在线| 国内免费精品永久在线视频| 婷婷亚洲久悠悠色悠在线播放| 97人妻精品一区二区三区动漫| 亚洲AV成人无码网站天堂久久| 91精品久久久久久久久青青| 97久久久精品综合88久久| 国产精品日韩精品在线播放| 国产成人夜色高潮福利影视| 亚洲第一福利社区| 免费福利在线| 亚洲第一男人av| 亚洲欧美日韩国产综合在线| 99自拍视频在线| 色老板视频在线观看| av免费在线免费| 精品三级久久久久久久电影聊斋| 含羞草www国产在线视频| 欧美性猛交xxxx偷拍洗澡| 99综合视频| 99久久99久久久精品棕色圆| 欧美精品v日韩精品v韩国精品v| 一区二区三区四区国产| 怡红院视频网站| 999精品视频一区二区三区| 一级特黄a大片免费| 久久亚洲精品石原莉奈| 欧美一级淫片aaaaaaa视频| 亚洲1卡2卡3卡4卡乱码精品| 欧美日韩中文字幕在线观看| 国产成人在线看| 久久五月激情| baoyu135国产精品免费| 中文字幕乱妇无码av在线| 新91视频在线观看| 亚洲午夜在线观看视频在线| 中文字幕国语官网在线视频| 黄色小说在线播放| 亚洲综合影视| 久久99中文字幕| 一区二区免费在线| 亚洲欧美影音先锋| 日本天堂网在线| 日本中文不卡| 国产亚洲精品91在线| a级黄色片免费看| 神马午夜电影一区二区三区在线观看| 偷拍日韩校园综合在线| 久久久久久人妻一区二区三区| 精品三级在线观看视频| 亚洲图片在线观看| 亚洲一区二区在线免费| a级免费在线观看| 久草中文在线| 成人有码在线播放| 97一区二区三区| 国产精品伦一区二区| 97国产成人无码精品久久久| 在线高清一区| 国产黄色片视频| 国产精品色婷婷久久58| jvid福利写真一区二区三区| 天天射天天操天天干|