docker run啟動時目錄映射研究


以docker hub的centos:8為研究對象

1、宿主機和容器映射目錄都不存在

宿主機和容器映射目錄都會自動創建,且在一邊操作等同於在另一邊操作。

2、宿主機目錄不存在,容器映射目錄為空。容器中/usr/lib/games目錄為空

宿主機映射目錄會自動創建,且在一邊操作等同於在另一邊操作。

3、宿主機目錄不存在,容器映射目錄不為空。容器中/usr/lib/locale/C.utf8目錄不為空

宿主機映射目錄會自動創建,容器映射目錄中原來的文件都消失了,在一邊操作等同於在另一邊操作,且操作的是宿主機目錄中的文件。

 

4、宿主機映射目錄為空,容器映射目錄不存在

容器映射目錄會自動創建,且在一邊操作等同於在另一邊操作。

5、宿主機和容器映射目錄都為空。

在一邊操作等同於在另一邊操作。

6、宿主機映射目錄為空,容器映射目錄不為空

容器映射目錄中原來的文件都消失了。在一邊操作等同於在另一邊操作,且操作的是宿主機目錄中的文件。

 

7、宿主機映射目錄不為空,容器映射目錄不存在

容器映射目錄會自動創建,一進去該目錄就能看見宿主機映射目錄中的文件,且在一邊操作等同於在另一邊操作。

8、宿主機映射目錄不為空,容器映射目錄為空

一進容器映射目錄就能看見宿主機映射目錄中的文件,且在一邊操作等同於在另一邊操作。

9、宿主機和容器映射目錄都不為空。

容器映射目錄中原來的文件都消失了。在一邊操作等同於在另一邊操作,且操作的是宿主機目錄中的文件。

 

如果想在宿主機中訪問容器中的文件,怎么辦呢?

1、如果想訪問鏡像自帶的文件,按照上面實踐,直接映射是不行的,直接映射的話,在宿主機和容器中訪問的都是宿主機目錄中的文件。自己想了個辦法,在dockerfile的CMD命令中給想訪問的文件加個軟鏈接,docker run時把這個軟鏈接所在目錄映射出來就行了。

https://www.cnblogs.com/koushr/p/14560872.html,dockerfile中CMD改成ln -sf /usr/local/bin/redis-cli /app/bin/redis-cli;redis-server /conf/redis.conf,即在容器啟動后,給/usr/local/bin/redis-cli文件建個軟鏈接。docker run命令修改為docker run -d --network n1 -p 6380:6380 -v /Users/shengruikou/Desktop/redis:/conf -v /Users/shengruikou/Desktop/redis/bin:/app/bin my_redis:6.2.0,把宿主機的/Users/shengruikou/Desktop/redis/bin目錄和容器的/app/bin目錄建立映射關系。在容器啟動后,就可以在宿主機的/Users/shengruikou/Desktop/redis/bin目錄中訪問容器的redis-cli文件了。

2、如果想訪問容器啟動后新生成的文件,則直接在docker run命令中把這個新文件的目錄映射出來即可。


免責聲明!

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



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