日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

19-数据持久化-Bind Mounting

發(fā)布時(shí)間:2025/3/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 19-数据持久化-Bind Mounting 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

19-數(shù)據(jù)持久化-Bind Mounting

Bind Mounting 與 Data Volume區(qū)別

Data Volume 需要在 Dockerfile 內(nèi)聲明需要?jiǎng)?chuàng)建的 volume 目錄。

Bind Mounting 則不需要在 Dockerfile 聲明 volume,只需要在創(chuàng)建容器的時(shí)候,也就是 run 的時(shí)候聲明即可。

如:

docker run -v /home/aaa:/root/aaa demo

上一節(jié)中 -v 參數(shù)是 mysql:/var/lib/mysql,冒號(hào) “:” 左邊是對(duì) /var/lib/mysql 這個(gè)目錄產(chǎn)生的volume起一個(gè)別名。

而在 Bind Mounting 中,-v 參數(shù)冒號(hào) “:” 左邊是本地的目錄路徑,右邊是創(chuàng)建容器內(nèi)的路徑,做一個(gè)映射。

Bind Mounting

通過(guò) Bind Mounting 創(chuàng)建的 volume,在我們修改本地的目錄時(shí),容器內(nèi)對(duì)應(yīng)的目錄也會(huì)跟著修改,因?yàn)槭峭粋€(gè)volume。

接下來(lái)我們通過(guò)一個(gè)實(shí)驗(yàn)來(lái)查看。

  • 創(chuàng)建一個(gè)docker-nginx文件夾,并進(jìn)入

    mkdir docker-nginx cd docker-nginx
  • 創(chuàng)建Dockerfiile和index.html兩個(gè)文件

    touch Dockerfile index.html

    修改Dockerfile文件如下:

    FROM nginx:latestWORKDIR /usr/share/nginx/htmlCOPY index.html index.html

    修改index.html文件如下:

    <html> <body><h1>Bind Mounting</h1><p>This is a demo.</p></body> </html>
  • 創(chuàng)建鏡像

    docker build -t vincent/my-nginx .
  • 創(chuàng)建容器

    docker run -d -p 80:80 --name web vincent/my-nginx

    查看運(yùn)行狀態(tài)

    [vagrant@10 docker-nginx]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 190b2e296c54 vincent/my-nginx "nginx -g 'daemon of…" 2 seconds ago Up 1 second 0.0.0.0:80->80/tcp web

    可以看到web容器是up的。

  • 訪問(wèn)本機(jī)80端口獲取web容器的內(nèi)容

    [vagrant@10 docker-nginx]$ curl 127.0.0.1 <html> <body><h1>Bind Mounting</h1><p>This is a demo.</p></body> </html>

    curl使用http協(xié)議的時(shí)候默認(rèn)是80端口,https默認(rèn)是443,我們是可以不需要加端口號(hào)的。

    我們也可以在筆記本中去訪問(wèn)這臺(tái)虛擬機(jī)的80端口服務(wù)

    vincent@dell-Inspiron-7559$: curl http://192.168.2.32 <html> <body><h1>Bind Mounting</h1><p>This is a demo.</p></body> </html>

    也可以通過(guò)瀏覽器訪問(wèn)查看,ip首先要在虛擬機(jī)內(nèi)通過(guò)ip a獲取。

  • 重新創(chuàng)建web容器并指定volume

    刪除web容器

    docker rm -f web

    這條命令會(huì)強(qiáng)制刪除一個(gè)正在運(yùn)行的容器,不推薦使用。

    重新創(chuàng)建容器,并指定掛載 /home/vagrant/docker-nginx/ 目錄。

    docker run -d -p 80:80 -v /home/vagrant/docker-nginx/:/usr/share/nginx/html --name web vincent/my-nginx
  • 查看被掛載的目錄在容器內(nèi)情況

    進(jìn)入web容器

    docker exec -it web /bin/bash

    查看 /usr/share/nginx/html 目錄下有哪些內(nèi)容

    root@cb7e310d02fd:/usr/share/nginx/html# ls /usr/share/nginx/html Dockerfile index.html

    我們發(fā)現(xiàn)在 /home/vagrant/docker-nginx/ 文件夾內(nèi)的Dockerfile文件被映射進(jìn)來(lái)了。

    那我們?cè)?/usr/share/nginx/html 文件夾內(nèi)創(chuàng)建一個(gè) test.txt 文件,看看是否在 外部也能看到

    touch test.txt

    創(chuàng)建好之后退出web容器,進(jìn)入/home/vagrant/docker-nginx/目錄下查看

    exit [vagrant@10 docker-nginx]$ ls Dockerfile index.html test.txt

    我們發(fā)現(xiàn)同樣被映射到了外面 docker-nginx 目錄下。同樣我們可以測(cè)試在容器內(nèi)修改 test.txt 文件看看里外是否同步。

    進(jìn)入web容器

    docker exec -it web /bin/bash

    修改test.txt文件

    root@cb7e310d02fd:/usr/share/nginx/html# echo "1234" >> test.txt root@cb7e310d02fd:/usr/share/nginx/html# cat test.txt 1234

    完成后我們退出容器并查看這個(gè)文件是否同步了

    exit [vagrant@10 docker-nginx]$ cat test.txt 1234

    結(jié)果是同樣發(fā)生了同步。因?yàn)槲覀冃薷牡钠鋵?shí)是同一個(gè)文件。

  • 熱更新

  • 我們?cè)俅螆?zhí)行一次curl獲取web內(nèi)容

    [vagrant@10 flask-app]$ curl 127.0.0.1 <html> <body><h1>Bind Mounting</h1><p>This is a demo.</p></body> </html>
  • 此時(shí)我們手動(dòng)修改本機(jī)目錄下的index.html文件

    nano docker-nginx/index.html

    修改如下:

    <html> <body><h1>Bind Mounting</h1><p>This is a app.</p></body> </html>
  • 驗(yàn)證在不重啟nginx服務(wù)器的情況下是否web內(nèi)容發(fā)生變化

    [vagrant@10 docker-nginx]$ curl 127.0.0.1 <html> <body><h1>Bind Mounting</h1><p>This is a app.</p></body> </html>

    我們可以看到web內(nèi)容已經(jīng)發(fā)生了變化。

  • 這對(duì)于開(kāi)發(fā)或后續(xù)更新來(lái)說(shuō)是很好的。

    總結(jié)

    以上是生活随笔為你收集整理的19-数据持久化-Bind Mounting的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。