日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

docker基础知识之挂载本地目录

發(fā)布時(shí)間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker基础知识之挂载本地目录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

https://my.oschina.net/piorcn/blog/324202

http://blog.csdn.net/yangzhenping/article/details/43667785


docker可以支持把一個(gè)宿主機(jī)上的目錄掛載到鏡像里。

docker?run?-it?-v?/home/dock/Downloads:/usr/Downloads?ubuntu64?/bin/bash

通過(guò)-v參數(shù),冒號(hào)前為宿主機(jī)目錄,必須為絕對(duì)路徑,冒號(hào)后為鏡像內(nèi)掛載的路徑。

現(xiàn)在鏡像內(nèi)就可以共享宿主機(jī)里的文件了。

默認(rèn)掛載的路徑權(quán)限為讀寫(xiě)。如果指定為只讀可以用:ro

docker?run?-it?-v?/home/dock/Downloads:/usr/Downloads:ro?ubuntu64?/bin/bash


docker還提供了一種高級(jí)的用法。叫數(shù)據(jù)卷。

數(shù)據(jù)卷:“其實(shí)就是一個(gè)正常的容器,專門(mén)用來(lái)提供數(shù)據(jù)卷供其它容器掛載的”。感覺(jué)像是由一個(gè)容器定義的一個(gè)數(shù)據(jù)掛載信息。其他的容器啟動(dòng)可以直接掛載數(shù)據(jù)卷容器中定義的掛載信息。

看示例:

docker?run?-v?/home/dock/Downloads:/usr/Downloads??--name?dataVol?ubuntu64?/bin/bash

創(chuàng)建一個(gè)普通的容器。用--name給他指定了一個(gè)名(不指定的話會(huì)生成一個(gè)隨機(jī)的名子)。

再創(chuàng)建一個(gè)新的容器,來(lái)使用這個(gè)數(shù)據(jù)卷。

docker?run?-it?--volumes-from?dataVol?ubuntu64?/bin/bash

--volumes-from用來(lái)指定要從哪個(gè)數(shù)據(jù)卷來(lái)掛載數(shù)據(jù)。


如何在Docker容器內(nèi)外互相拷貝數(shù)據(jù)?

?

從容器內(nèi)拷貝文件到主機(jī)上

[plain]?view plaincopy
  • docker?cp?<containerId>:/file/path/within/container?/host/path/target??
  • ?

    從主機(jī)上拷貝文件到容器內(nèi)


    參考自:

    http://stackoverflow.com/questions/22907231/copying-files-from-host-to-docker-container


    1.用-v掛載主機(jī)數(shù)據(jù)卷到容器內(nèi)


    ?

    [plain]?view plaincopy
  • docker?run?-v?/path/to/hostdir:/mnt?$container??
  • 在容器內(nèi)拷貝??
  • cp?/mnt/sourcefile?/path/to/destfile??

  • ?

    ?

    2.直接在主機(jī)上拷貝到容器物理存儲(chǔ)系統(tǒng)

    ?


    A. 獲取容器名稱或者id :

    [plain]?view plaincopy
  • $?docker?ps??

  • ?

    ?

    B. 獲取整個(gè)容器的id

    [plain]?view plaincopy
  • $?docker?inspect?-f???'{{.Id}}'??步驟A獲取的名稱或者id??

  • ?

    ?

    C. 在主機(jī)上拷貝文件:

    [plain]?view plaincopy
  • $?sudo?cp?path-file-host?/var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE???
  • 或者??
  • $?sudo?cp?path-file-host?/var/lib/docker/devicemapper/mnt/123abc<<id>>/rootfs/root??

  • ?

    例子:

    [plain]?view plaincopy
  • $?docker?ps??
  • ??
  • CONTAINER?ID??????IMAGE????COMMAND???????CREATED??????STATUS???????PORTS????????NAMES??
  • ??
  • d8e703d7e303???solidleon/ssh:latest??????/usr/sbin/sshd?-D??????????????????????cranky_pare??
  • ??
  • $?docker?inspect?-f???'{{.Id}}'?cranky_pare??
  • ??
  • or???
  • $?docker?inspect?-f???'{{.Id}}'?d8e703d7e303??
  • ??
  • d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5??
  • ??
  • $?sudo?cp?file.txt?/var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5??

  • 3.用輸入輸出符


    ?

    [plain]?view plaincopy
  • docker?run?-i?ubuntu?/bin/bash?-c?'cat?>?/path/to/container/file'?<?/path/to/host/file/??

  • 或者

    [plain]?view plaincopy
  • docker?exec?-it?<container_id>?bash?-c?'cat?>?/path/to/container/file'?<?/path/to/host/file/??
  • 總結(jié)

    以上是生活随笔為你收集整理的docker基础知识之挂载本地目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。