docker 掛載三種方式 以及區別


volume: Docker管理宿主機文件系統的一部分(/var/lib/docker/volumes)

bind mounts:可以存儲在宿主機系統的任意位置
tmpfs mounts:掛載存儲在宿主機系統的內存中,不會寫入宿主機的文件系統

 

 

voulume  指定docker  掛載區域

bind    是宿主機任意文件系統

tmpfs  是臨時掛載 放在內存

 

volume  創建數據卷

創建volume數據卷:docker volume create for_nginx  

查看當前所有數據卷信息:docker volume ls
上面一大堆名字為很長字符的數據卷為匿名數據卷,是因為之前創建容器的時候沒有手動創建數據卷進行了文件掛載,Docker就會自動創建匿名數據卷。
啟動容器並指定數據卷:docker run -d -p 80:80 --mount type=volume , source=for_nginx,target=/usr/share/nginx/html nginx

可以查看下容器具體信息: docker inspect (容器id或者名稱)

 

 

可以cd 到目錄下 容器以及掛載到宿主機了

 

 

我們在宿主機數據卷里新增一個a . html
進入容器內部查看是否也增加了a.html文件:docker exec -it f7adebee03c2 /bin/bash

瀏覽器IP/a. html可以直接訪間到頁面,證明數據卷掛載成功
如果強制刪除容器后,數據卷不會被刪除,還是會保存在宿主機docker/volumes路徑下

 

 

bing mounts  (綁定數據卷)

bind mounts可以將宿主機任意目錄掛載到容器內
將宿主機/opt目錄掛載到容器內:docker run -d -p 80:80 --mounttype=bind , source=/opt ,target=/usr/share/nginx/html nginx
進入容器查看nginx默認html頁面:docker exec -it df4a184680be /bin/bash

 

 


發現並沒有nginx默認的index.html和50.html頁面,但瀏覽器可以正常顯示Welcome tonginx!
注。如果你使用Bind mounts掛載宿主機目錄到一個容器中的非空目錄,那么此容器中的非空目錄中的文件會被隱藏,容器訪間這個目錄時能夠訪間到的文件均來自於宿主機目錄。

 

三種場景

 

volumes:
多個運行容器間共享數據
當Docker主機不確保具有給定的目錄或文件
備份、恢復、或將數據從一個Docker主機遷移到另一個Docker主機時
bind mount:
主機與容器共享配置文件(Docker默認情況下通過這種方式為容器提供DNS解析,通過將/etc/resolv .conf掛載到容器中)
共享源代碼或build artifacts(比如將Maven的target/目錄掛載到容器中,每次在Docker主機中build Maven工程時,容器能夠訪間到那些rebuilt artifacts)
當docker主機中的文件或目錄結構和容器需要的一致時
tmpfs mount:
既不想將數據存於主機,又不想存於容器中時(這可以是出於安全的考慮,或當應用需要寫大量非持久性的狀態數據時為了保護容器的性能)。

 

 

容器間通信方式   1  link 

不需要用ip直接用容器名(服務名)ping
docker exec -it tomcat02 ping tomcat01
I
上面的無法ping通!
docker run -d -p --name tomcat03 --link tomcat02 tomcatdocker exec -it tomcat03 ping tomcat02
此時就可以ping同通
原理:
docker exec -it tomcat83 cat /etc/hosts
總結:

--link就是在hosts配置中增加——個映射

 

docker  network ls  docker  默認  bridge  、host(共享網絡)  還有自定義

 

 

用於2個容器互通 如果更多  需要加入橋接

 

docker run -itd  --name tomcat01 --net bridge tomcat

 

如下三個容器橋接的同一個網絡

 

 

 

自建的docker 網絡 默認就是橋接

docker network create mynet

 

 

 

 

來是三個測試一下

 

 

一般自定義網絡  可以相互通信   

 

 

c1 聯通b1 不同網絡之間怎么聯通  如下 

docker network connect mynet tomcat88

不同網絡下的容器也能互相連通,tomcat00是其他網絡下的容器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM