成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個(gè)因Docker容器掛載引發(fā)的事故

云計(jì)算 云原生
docker部署容器需要進(jìn)行掛載時(shí),使用掛載目錄的方式?,不要直接掛載文件。 掛載目錄不會(huì)出現(xiàn)宿主機(jī)文件更新,而容器中文件沒(méi)有更新的問(wèn)題。?

背景

使用 docker 部署的 nginx,并且已經(jīng)配置了文件掛載,參數(shù)如下:

  • -v /deploy/nginx/conf.d/doc.crt:/etc/nginx/conf.d/doc.crt
  • -v /deploy/nginx/conf.d/doc.key:/etc/nginx/conf.d/doc.key
  • -v /deploy/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf

后續(xù)因?yàn)榧夹g(shù)原因,需要將一個(gè) location 加上 *.html 禁用緩存,如下配置

if ($request_filename ~* .*\\.(htm|html)$) {
    add_header Cache-Control "no-store";
}

于是就在宿主機(jī)上直接修改 /deploy/nginx/conf.d/default.conf 文件。

然后運(yùn)行 docker exec -it pc-nginx nginx -s reload,使配置生效。

但是實(shí)際測(cè)試結(jié)果并沒(méi)有生效

還以為是配置加的不對(duì),花了好長(zhǎng)時(shí)間,改了幾種方式,結(jié)果都不行。

直到進(jìn)入容器內(nèi),查看容器內(nèi)的文件發(fā)現(xiàn),文件根本就沒(méi)有改動(dòng)?。?!

重啟了這個(gè)容器,配置文件才進(jìn)行了更新,問(wèn)題得到解決。

思考

docker容器的掛載難道不是生效,而是要容器啟動(dòng)的時(shí)候才會(huì)更新?

肯定不是這樣,容器內(nèi)產(chǎn)生的日志內(nèi)容,在容器外可以實(shí)時(shí)查看,難道是內(nèi)->外是實(shí)時(shí),外->內(nèi) 是啟動(dòng)的時(shí)候才加載?

如果是這樣,那我一直以為的docker掛載是理解錯(cuò)了嗎,越想越不對(duì)???

探索

經(jīng)過(guò)一番查閱資料,發(fā)現(xiàn)了這個(gè):

Docker 中,mount volume 的原理是借用了 Linux Namespace 中的 Mount NameSpace,隔離系統(tǒng)中不同進(jìn)程的掛載點(diǎn)視圖,實(shí)際文件是沒(méi)有變化。

在container中,bash 實(shí)際就是一個(gè)運(yùn)行在宿主機(jī)上的進(jìn)程,被Docker用Linux分別隔離了 Mount Namespace、UTS Namespace、IPC Namespace、PID Namespace、Network Namespace和User Namespace,使得它看上去好像運(yùn)行在了一個(gè)獨(dú)立的、相對(duì)隔離的系統(tǒng)上,但實(shí)際它的一切資源都是宿主機(jī)在不同Namespace中的一個(gè)投影,文件也不例外。

Linux中,證明文件是否相同的根本途徑是,使用 stat命令,判斷其 inode,如果兩個(gè)文件的inode相同,兩個(gè)文件必定為同一文件,從而兩個(gè)文件的內(nèi)容也必然相同。

docker本身不支持直接映射文件,使用docker映射文件時(shí)可能會(huì)出現(xiàn)問(wèn)題 。

實(shí)踐

復(fù)現(xiàn)場(chǎng)景,驗(yàn)證問(wèn)題

  1. 創(chuàng)建文件
mkdir -p /opt/nginx
cd /opt/nginx
vi demo.conf

nginx內(nèi)容如下:

server {
    listen 80;
    server_name gateway.cn;
  
    location / {
          proxy_pass http://localhost:7001/;
    }
}
  1. 創(chuàng)建2個(gè)容器,一個(gè)映射目錄,一個(gè)映射文件

docker run --name n1-dir -v /opt/nginx:/etc/nginx/conf.d -d nginx

docker run --name n2-file -v /opt/nginx/demo.conf:/etc/nginx/conf.d/demo.conf -d nginx

  1. 再開(kāi)啟兩個(gè) shell ,進(jìn)入容器內(nèi),查看文件

docker exec -ti n1-dir /bin/bash

docker exec -ti n2-file /bin/bash

cat /etc/nginx/conf.d/demo.conf

  1. 修改外部文件
  • 簡(jiǎn)單修改,加一行注釋# fadsff
  1. 重新查看文件
  • 但是得到了相同的結(jié)果,這與預(yù)期不符,使用stat命令,容器外和2個(gè)容器內(nèi)的demo.conf 文件都是同一個(gè)inode

和線上的環(huán)境得到的結(jié)果不一致,這就很令人費(fèi)解。想到線上的環(huán)境不是用的root賬號(hào)部署的,難道和用戶(hù)也有關(guān)系?

創(chuàng)建demo用戶(hù),再次嘗試

圖片圖片

重試剛才的步驟,得到結(jié)果:

n3

圖片圖片

n4

圖片圖片

得到結(jié)果,在掛載conf.d 目錄時(shí),文件可以得到正常更新,但是如果直接掛載文件,文件的內(nèi)容并不會(huì)實(shí)時(shí)更新。

小結(jié)

docker部署容器需要進(jìn)行掛載時(shí),使用掛載目錄的方式,不要直接掛載文件。 掛載目錄不會(huì)出現(xiàn)宿主機(jī)文件更新,而容器中文件沒(méi)有更新的問(wèn)題。

責(zé)任編輯:武曉燕 來(lái)源: Java技術(shù)指北
相關(guān)推薦

2011-11-25 13:04:43

空格usr

2021-07-27 07:12:11

Getter接口Setter

2022-04-08 08:48:16

線上事故日志訂閱者

2020-05-07 11:00:24

Go亂碼框架

2010-11-04 09:11:34

Fedora 14評(píng)測(cè)

2013-12-19 09:58:36

移動(dòng)應(yīng)用產(chǎn)品市場(chǎng)

2021-12-01 06:59:27

架構(gòu)

2024-02-28 08:12:25

SSE接口代理

2019-01-16 09:20:42

架構(gòu)設(shè)計(jì)JVM FullGC宕機(jī)事故

2020-12-09 08:59:59

MongoDB復(fù)合索事故

2021-10-08 08:55:23

FacebookBGP工具

2017-08-23 08:09:11

UDPDocker容器

2018-07-16 22:29:29

代碼迭代質(zhì)量

2020-11-20 10:50:01

Docker容器

2011-04-27 10:02:54

兼容墨盒用戶(hù)體驗(yàn)

2021-07-24 13:11:19

Redis數(shù)據(jù)技術(shù)

2025-03-10 08:20:53

代碼線程池OOM

2023-02-16 08:55:13

2024-02-26 18:11:08

Docker容器鏡像

2021-06-06 16:15:57

地區(qū)接口項(xiàng)目
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲成人黄色 | 羞羞羞视频 | 中文字幕视频在线 | 久久久国产一区二区三区四区小说 | 成人国产免费视频 | 成人精品一区二区三区四区 | 一级黄色片在线免费观看 | 久久免费香蕉视频 | 成人免费日韩 | 成人午夜激情 | 精品自拍视频在线观看 | 精品一区二区在线视频 | 久久一区二区三区四区五区 | 很很干很很日 | 国产精品欧美精品 | 看av网址| 日韩在线欧美 | h漫在线观看 | 国产精品成人国产乱 | 亚洲欧洲成人av每日更新 | 中文字幕在线播放不卡 | 国产视频线观看永久免费 | 一道本不卡视频 | 99riav国产一区二区三区 | 亚洲综合在线视频 | 欧美一区二区三区高清视频 | 在线看av网址 | 欧美激情精品久久久久 | 中文字幕在线网 | 国产精品久久久久久模特 | 国产日韩欧美在线 | 日韩在线视频一区 | 国产精品久久久久无码av | 日韩电影一区二区三区 | 97在线观看 | 午夜男人天堂 | 欧美日韩一区二区电影 | 不卡视频一区二区三区 | 91精品久久久久久久久中文字幕 | 福利片在线观看 | 热re99久久精品国产99热 |