自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么不推薦Docker文件掛載?

開發(fā) 前端
今天群里小伙伴發(fā)了一個(gè)疑問,它通過docker啟動(dòng)了個(gè)nginx,nginx的一些相關(guān)配置文件都是通過文件的方式進(jìn)行映射的,疑問的點(diǎn)在于,在宿主機(jī)上修改了文件,為什么對應(yīng)映射到容器里面的文件內(nèi)容沒有改變?

今天群里小伙伴發(fā)了一個(gè)疑問,它通過docker啟動(dòng)了個(gè)nginx,nginx的一些相關(guān)配置文件都是通過文件的方式進(jìn)行映射的,疑問的點(diǎn)在于,在宿主機(jī)上修改了文件,為什么對應(yīng)映射到容器里面的文件內(nèi)容沒有改變?

話不多說,起個(gè)容器看

  1. docker run --name nginx -p 8082:80 -v /opt/nginx/nginx.conf:/etc/nginx.conf -d nginx 
  2. Unable to find image 'nginx:latest' locally 
  3. latest: Pulling from library/nginx 
  4. a2abf6c4d29d: Pull complete 
  5. a9edb18cadd1: Pull complete 
  6. 589b7251471a: Pull complete 
  7. 186b1aaa4aa6: Pull complete 
  8. b4df32aa5a72: Pull complete 
  9. a0bcbecc962e: Pull complete 
  10. Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31 
  11. Status: Downloaded newer image for nginx:latest 
  12. 3d669ab21cfc6845f8f7105233215c9ab9002ddd06af1132fba257e14f93121e 

我這里直接映射了個(gè)nginx的主配置文件,別管目錄對不對,只是驗(yàn)證文件修改

然后此時(shí)的文件內(nèi)容應(yīng)該是一致的,現(xiàn)在直接修改宿主機(jī)上的/opt/nginx/nginx.conf文件,首行加一個(gè)注釋

保存后,進(jìn)容器,看下容器內(nèi)的nginx.conf文件內(nèi)容,也可以直接執(zhí)行命令查看

  1. 進(jìn)入容器 
  2. docker exec -it 3d /bin/bash 
  3. 查看文件開頭 
  4. head /etc/nginx.conf 
  5. 或者直接在宿主機(jī)查看 
  6. docker exec 3d cat /etc/nginx.conf 

可以看到,文件內(nèi)容未改變

這是為什么呢?

這個(gè)問題,和Linux文件的inode有關(guān)系

第一次啟動(dòng)容器的時(shí)候,看下兩個(gè)文件的inode

  • 宿主機(jī)

  • 容器

可以看到是同一個(gè)inode,也就是同一個(gè)文件,宿主機(jī)修改了文件內(nèi)容后,再對比

  • 宿主機(jī)

  • 容器

兩個(gè)就不是一個(gè)文件,此時(shí)想要容器內(nèi)文件生效,需要重啟容器,重新加載新的文件

再看下目錄映射的情況,還是啟動(dòng)個(gè)容器

  1. docker run --name nginx -p 8082:80 -v /opt/nginx:/opt/ -d nginx 
  2. 537fc0c513d3bb83bb78d4f8333ede6a8a9d53070108ab55be5a8b9f2347ac9c 

這次用目錄掛載,本地/opt/nginx掛載到容器/opt/下面 ,之后重復(fù)上面的操作,查看inode,修改文件,對比inode

可以看到,目錄掛載是沒有問題的,容器內(nèi)文件隨宿主機(jī)文件實(shí)時(shí)改變的

為什么目錄可以呢?實(shí)際上就是那句經(jīng)典,Linux下,一切皆文件,目錄也是一種特殊的文件,實(shí)際上它也是有自己的inode,掛載目錄的話,它實(shí)際上是將容器內(nèi)目錄的inode指向到了宿主機(jī)的目錄

所以目錄內(nèi)文件的改變,會(huì)實(shí)時(shí)改變,而文件掛載的話,實(shí)際容器內(nèi)指向的inode還是原來的,而現(xiàn)在的文件實(shí)際上已經(jīng)不是該inode了

本文轉(zhuǎn)載自微信公眾號「運(yùn)維研習(xí)社」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系運(yùn)維研習(xí)社公眾號。

 

責(zé)任編輯:武曉燕 來源: 運(yùn)維研習(xí)社
相關(guān)推薦

2024-11-12 10:30:54

Docker部署數(shù)據(jù)庫

2024-11-29 08:20:22

Autowired場景項(xiàng)目

2024-06-04 00:10:00

開發(fā)拷貝

2015-07-01 10:25:07

Docker開源項(xiàng)目容器

2024-09-12 08:32:42

2023-11-06 13:04:59

Python日志庫

2023-09-27 23:03:01

Java虛擬線程

2020-07-02 14:12:52

C++語言編程

2021-08-23 13:02:50

MySQLJOIN數(shù)據(jù)庫

2025-04-29 07:06:20

2020-08-24 10:55:41

數(shù)據(jù)庫雙寫代碼

2021-07-04 14:19:03

RabbitMQ消息轉(zhuǎn)換

2021-01-13 09:55:29

try-catch-fJava代碼

2018-11-29 14:30:42

數(shù)據(jù)庫外鍵約束應(yīng)用程序

2021-09-08 07:58:58

字節(jié)系統(tǒng)雙寫

2020-08-31 11:20:53

MySQLuuidid

2015-07-03 09:37:21

程序員外包公司

2021-09-07 14:01:39

手機(jī)內(nèi)存技術(shù)

2024-07-29 09:03:00

2020-11-13 09:22:32

Docker數(shù)據(jù)庫容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號