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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker之数据卷管理

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker之数据卷管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?

目錄

1.docker使用

2.優化


? ? ? ?在docker之網絡訪問中,通過啟動了nginx服務進行了訪問,只展示了nginx的首頁信息,如果想訪問我們自己的代碼如何操作呢,這就需要使用到數據卷的知識了。在Docker中,要想實現數據的持久化(所謂Docker的數據持久化即數據不隨著Container的結束而結束),需要將數據從宿主機掛載到容器中。數據卷的管理可以參考:Docker數據卷管理

1.docker使用

這里通過一個小程序來看看,通過xiaoniaoniaofeifei來看看如何實現數據卷的使用。如果是本地的壓縮文件使用xshell可以直接拖動到xshell中進行上傳,上傳完成之后進行解壓。

xiaoniaofeifei軟件包下載鏈接,提取碼:?jyqy

[root@localhost srv]# ls xiaoniaofeifei.zip [root@localhost srv]# unzip xiaoniaofeifei.zip Archive: xiaoniaofeifei.zipinflating: sound1.mp3 creating: img/inflating: img/bg1.jpg inflating: img/bg2.jpg inflating: img/number1.png inflating: img/number2.png inflating: img/s1.png inflating: img/s2.png inflating: 21.js inflating: 2000.png inflating: icon.png inflating: index.html [root@localhost srv]# ls 2000.png 21.js icon.png img index.html sound1.mp3 xiaoniaofeifei.zip

將整個目錄下的所有信息拷貝至容器中去。先查看一下容器的id

[root@localhost srv]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 738b4313c4f7 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 192.168.0.101:49154->80/tcp pensive_chaplygin 3a885ede5267 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 192.168.0.101:49153->80/tcp distracted_antonelli c2c9273e9484 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:81->80/tcp, :::81->80/tcp mystifying_feistel 6ee5b735e752 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 192.168.0.101:80->80/tcp frosty_beaver e2e1a5cbc833 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 192.168.0.100:80->80/tcp jovial_raman [root@localhost srv]# docker rm -f `docker ps -a -q` 容器太多了刪除一下 738b4313c4f7 3a885ede5267 c2c9273e9484 6ee5b735e752 e2e1a5cbc833

接著重新創建一個新的容器

[root@localhost srv]# docker run -d -p 80:80 nginx:latest e7d08547b7f70eeb16239c73dd5ac572d92a05b6273b13d55f1f5ffe55ec9a81 [root@localhost srv]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7d08547b7f7 nginx:latest "/docker-entrypoint.…" 21 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp kind_haslett

將解壓的文件拷貝至如下目錄,使用cp命令進行拷貝拷貝至容器的目錄下,這里的e7d085**f7為容器的id,接著進入該容器,使用exec

[root@localhost srv]# docker container cp . e7d08547b7f7:/usr/share/nginx/html [root@localhost srv]# docker exec -it e7d08547b7f7 /bin/bash root@e7d08547b7f7:/# cd /usr/share/nginx/html/ root@e7d08547b7f7:/usr/share/nginx/html# ls 2000.png 21.js 50x.html icon.png img index.html sound1.mp3 xiaoniaofeifei.zip root@e7d08547b7f7:/usr/share/nginx/html#

接著訪問一下192.168.0.101,這里的ip是宿主機的ip

2.優化

? ? 使用過程中發現有一個bug需要修復下,需要修改下index.html

root@e7d08547b7f7:/usr/share/nginx/html# ls 2000.png 21.js 50x.html icon.png img index.html sound1.mp3 xiaoniaofeifei.zip root@e7d08547b7f7:/usr/share/nginx/html# vi index.html bash: vi: command not found

發現沒有vi命令,這時可以現場裝一個vi,但是太麻煩了。因此這里代碼盡量不要使用cp命令放進去,退出到src目錄,使用exit退出當前容器。調試的時候盡量放置在宿主機上,這樣一邊修改一邊調試。

[root@localhost srv]# docker run -d -p 81:80 -v /srv:/usr/share/nginx/html nginx:latest -v --volumn /srv 宿主機目錄 /usr/share/nginx/html 容器目錄

再次進入到Ip:port中進行訪問,注意這里需要刷新一下,f5普通刷新,shift+f5強制刷新。

使用者這種-v的好處就是,如果遇到bug就可以直接在宿主機上直接修改。比如現在有個標題

[root@localhost srv]# ls 2000.png 21.js icon.png img index.html sound1.mp3 xiaoniaofeifei.zip [root@localhost srv]# vi index.html

在刷新,發現標題已經修改。使用docker volume 查詢volume命令,使用ls查詢當前有無卷

[root@localhost srv]# docker volume ls DRIVER VOLUME NAME [root@localhost srv]# [root@localhost _data]# docker run -d -p 82:80 -v teset:/usr/share/nginx/html nginx:latest 5d5d541f2394ff2a6975e31333f99014db8cf7f6c6c0a257d8bfd048d3b192e9

使用test,發現沒有會自動創建一個卷

[root@localhost srv]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2f069022da24 nginx:latest "/docker-entrypoint.…" 52 seconds ago Up 6 seconds 80/tcp, 0.0.0.0:49153->82/tcp, :::49153->82/tcp pedantic_yalow ea037ed65357 nginx:latest "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp beautiful_haibt e7d08547b7f7 nginx:latest "/docker-entrypoint.…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, :::80->80/tcp kind_haslett [root@localhost srv]# docker volume ls DRIVER VOLUME NAME local teset

那這個卷有什么好處呢?

[root@localhost srv]# docker volume inspect teset [{"CreatedAt": "2021-05-05T14:50:10+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/teset/_data","Name": "teset","Options": null,"Scope": "local"} ]

切換對應的掛載目錄

[root@localhost _data]# ls 50x.html index.html

訪問一下首頁

[root@localhost _data]# rm -fr *[root@localhost _data]# cp /srv/* .

再次刷新,就可以訪問。

[root@localhost _data]# docker run -d -p 83:80 -v teset:/usr/share/nginx/html nginx:latest 1e98cb4a3c77a7f5201bfe10fd20a36ced68225e7608121bbbfbbabffb13a1e9

再次啟動一個83的容器,這樣就實現了數據共享。

總結

以上是生活随笔為你收集整理的docker之数据卷管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。