溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Docker將容器目錄掛載到主機(jī)上

發(fā)布時(shí)間:2022-05-30 09:39:50 來(lái)源:億速云 閱讀:1396 作者:zzz 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下如何使用Docker將容器目錄掛載到主機(jī)上的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

一、基本介紹

這里我們主要介紹 Docker 里的一個(gè)命令,叫做 --mount,其本質(zhì)上來(lái)說(shuō)和 --volume 命令并沒(méi)有太大區(qū)別,因?yàn)檫@兩個(gè)命令都是用來(lái)給容器提供一個(gè)掛載目錄。唯一的區(qū)別便是,容器的掛載類型不同,那么效果也會(huì)有所不同。

容器的掛載類型:

  • bind:將宿主機(jī)的指定目錄掛載到容器的指定目錄,以覆蓋的形式掛載(這也就意味著,容器指定目錄下的內(nèi)容也會(huì)隨著消失)

  • volume在宿主機(jī)的 Docker 存儲(chǔ)目錄下創(chuàng)建一個(gè)目錄,并掛載到容器的指定目錄(并不會(huì)覆蓋容器指定目錄下的內(nèi)容)

在有些時(shí)候,由于容器內(nèi)的目錄有著特殊作用,并不能以覆蓋的形式進(jìn)行掛載。但又想掛載到宿主機(jī)上,這時(shí)我們便可以使用 volume 類型的掛載方式。像我們上面所說(shuō)的 --mount--volume 命令都是支持以這兩種類型的方式掛載,無(wú)非就是配置稍有不同。

兩種命令使用 bind 類型掛載區(qū)別:當(dāng)宿主機(jī)上指定的目錄不存在時(shí),我們使用 --volume 命令掛載時(shí),便會(huì)自動(dòng)的在宿主機(jī)上創(chuàng)建出相應(yīng)目錄,而我們要是使用 --mount 命令來(lái)掛載,便會(huì)輸出 `` 報(bào)錯(cuò)信息。

二、將容器目錄掛載到主機(jī)

1)使用 --volume 命令實(shí)現(xiàn) bind 類型的掛載

[root@k8s-master01 ~]# docker run -d -it --name zhangsan \
-v /zhangsan:/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# echo "Hello World" > /zhangsan/index.html
[root@k8s-master01 ~]# docker exec -it zhangsan /bin/bash
root@3cad299c93aa:/# cd /usr/share/nginx/html/
root@3cad299c93aa:/usr/share/nginx/html# ls
index.html
root@3cad299c93aa:/usr/share/nginx/html# curl 127.0.0.1

如何使用Docker將容器目錄掛載到主機(jī)上

可以看到,當(dāng)我們使用 bind 類型的掛載時(shí),容器內(nèi)指定的目錄原有內(nèi)容會(huì)被覆蓋。

2)使用 --mount 命令實(shí)現(xiàn) bind 類型的掛載

[root@k8s-master01 ~]# docker run -d -it --name wangwu \
--mount type=bind,source=/zhangsan,destination=/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it wangwu /bin/bash
root@474cf5ddd29f:/# cd /usr/share/nginx/html/
root@474cf5ddd29f:/usr/share/nginx/html# ls
index.html
root@474cf5ddd29f:/usr/share/nginx/html# curl 127.0.0.1

如何使用Docker將容器目錄掛載到主機(jī)上

我們上面指定 type=bind 類型的原因是因?yàn)?--mount 命令默認(rèn)掛載的類型就是 volume 類型,所以需要指定。

--mount 命令掛載格式:

  • bind 掛載類型:--mount [type=bind] source=/path/on/host,destination=/path/in/container[,...]

  • volume 掛載類型:--mount source=my-volume,destination=/path/in/container[,...]

3)使用 --volume 命令實(shí)現(xiàn) volume 類型的掛載

[root@k8s-master01 ~]# docker run -d -it --name volume \
-v zhangsan:/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it volume /bin/bash
root@dced26ccb8f0:/# cd /usr/share/nginx/html/
root@dced26ccb8f0:/usr/share/nginx/html# ls
50x.html  index.html

如何使用Docker將容器目錄掛載到主機(jī)上

4)使用 --mount 命令實(shí)現(xiàn) volume 類型的掛載

[root@k8s-master01 ~]# docker run -d -it --name mount \
--mount source=mount,destination=/usr/share/nginx/html \
nginx:1.21.0
[root@k8s-master01 ~]# docker exec -it mount /bin/bash
root@7e63ca69f135:/# cd /usr/share/nginx/html/
root@7e63ca69f135:/usr/share/nginx/html# ls
50x.html  index.html

如何使用Docker將容器目錄掛載到主機(jī)上

查看宿主機(jī)的掛載目錄

如何使用Docker將容器目錄掛載到主機(jī)上

其實(shí),使用 bind 或是 mount 類型的掛載方式,區(qū)別主要就是在于有 / 和沒(méi) /,有 / 就會(huì)掛載到宿主機(jī)的指定目錄,沒(méi)有 / 則是會(huì)掛載到宿主機(jī) Docker 所在的目錄中。

以上就是“如何使用Docker將容器目錄掛載到主機(jī)上”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI