docker es持久化_使用docker数据卷对容器数据持久化
生活随笔
收集整理的這篇文章主要介紹了
docker es持久化_使用docker数据卷对容器数据持久化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
volume是用于對Docker容器生成和使用的數據持久化的首選機制。如果您的容器生成非持久狀態數據,請考慮使用 tmpfs掛載以避免將數據永久存儲在任何地方,并通過避免寫入容器的可寫層來提高容器的性能。
默認容器的數據存儲
在這里我們在容器中創建一些模擬的數據,然后模式容器停止或刪除后數據是否丟失。
## 創建數據?[root@myserver ~]# docker psCONTAINER ID ? ? ? IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? PORTS ? ? ? ? ? ? ? ? ? NAMESa0316d74ef5d ? ? ? bulletinboard:1.0 ? "docker-entrypoint.s…" ? 55 minutes ago ? ? Up 16 minutes ? ? ? 0.0.0.0:8000->8080/tcp ? bb[root@myserver ~]# docker exec -it bb bashroot@a0316d74ef5d:/usr/src/app# lsDockerfile app.js ? fonts node_modules ? package.json server.jsLICENSE ? ? backend index.html package-lock.json readme.md site.cssroot@a0316d74ef5d:/usr/src/app# cdroot@a0316d74ef5d:~# lsroot@a0316d74ef5d:~# mkdir dataroot@a0316d74ef5d:~# lsdataroot@a0316d74ef5d:~# cd data/root@a0316d74ef5d:~/data# lsroot@a0316d74ef5d:~/data# echo 12323 > tst.txtroot@a0316d74ef5d:~/data# cat tst.txt12323root@a0316d74ef5d:~/data# pwd/root/dataroot@a0316d74ef5d:~/data#??## 停止并重新啟動容器數據還是存在的## 刪除容器(加入對鏡像做了修改)數據丟失 ?[root@myserver ~]# docker run -itd --name bb bulletinboard:1.098e14379e2109c9230d1d265ac586ce3bba433efb7d2ef544ef93cb58c859f0a[root@myserver ~]# docker psCONTAINER ID ? ? ? IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? PORTS ? ? ? ? ? ? ? NAMES98e14379e210 ? ? ? bulletinboard:1.0 ? "docker-entrypoint.s…" ? 3 seconds ago ? ? ? Up 2 seconds ? ? ? 8080/tcp ? ? ? ? ? bb[root@myserver ~]# docker exec -it bb bashroot@98e14379e210:/usr/src/app# cdroot@98e14379e210:~# lsroot@98e14379e210:~#VOLUME使用方法
我們來通過docker volume命令管理volume。 創建volume到將volume掛載到容器中。
## 創建一個volume[root@myserver ~]# docker volume create --name myvolumemyvolume[root@myserver ~]# docker volume lsDRIVER ? ? ? ? ? ? VOLUME NAMElocal ? ? ? ? ? ? ? myvolume[root@myserver ~]# docker volume inspect myvolume[ ? { ? ? ? "CreatedAt": "2020-07-11T21:52:26-04:00", ? ? ? "Driver": "local", ? ? ? "Labels": {}, ? ? ? "Mountpoint": "/var/lib/docker/volumes/myvolume/_data", ? ? ? "Name": "myvolume", ? ? ? "Options": {}, ? ? ? "Scope": "local" ? }]?## 在掛載點創建數據[root@myserver ~]# cd /var/lib/docker/volumes/myvolume/_data[root@myserver _data]# ls[root@myserver _data]# echo 11111 > a.txt[root@myserver _data]# lsa.txt[root@myserver _data]# cd -/root???## 將卷掛載給容器[root@myserver ~]# docker run -itd --name bb -v myvolume:/data:rw bulletinboard:1.01ed40ff338280def96b4c395d33977219b3e3a47e10444cf23d16f4bb83e0e27[root@myserver ~]# docker psCONTAINER ID ? ? ? IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? PORTS ? ? ? ? ? ? ? NAMES1ed40ff33828 ? ? ? bulletinboard:1.0 ? "docker-entrypoint.s…" ? 4 seconds ago ? ? ? Up 3 seconds ? ? ? 8080/tcp ? ? ? ? ? bb[root@myserver ~]# docker exec -it bb bashroot@1ed40ff33828:/usr/src/app# cdroot@1ed40ff33828:~# lsroot@1ed40ff33828:~# cd /root@1ed40ff33828:/# lsbin ? data etc ? lib media opt ? root sbin sys usrboot dev ? home lib64 mnt proc run ? srv ? tmp varroot@1ed40ff33828:/# cd data/root@1ed40ff33828:/data# lsa.txtroot@1ed40ff33828:/data# cat a.txt11111root@1ed40ff33828:/data# echo 12323423 >> a.txtroot@1ed40ff33828:/data# cat a.txt1111112323423root@1ed40ff33828:/data# cdroot@1ed40ff33828:~# mkdir /data/testroot@1ed40ff33828:~# echo 12312312 > /data/test/a.txtroot@1ed40ff33828:~# exitexit??### 刪除容器后重新啟動容器發現數據還在。[root@myserver ~]# docker rm --force bbbb[root@myserver ~]# docker run -itd --name bb -v myvolume:/data:rw bulletinboard:1.017f0178d062e8fe041aae55229e1f522237ca5753e01515a451c68d9c2aaf51b[root@myserver ~]# docker exec -it bb bashroot@17f0178d062e:/usr/src/app# cd /data/root@17f0178d062e:/data# lsa.txt testroot@17f0178d062e:/data# ls test/a.txt容器掛載VOLUME的另外一種方式
我們也可以在啟動容器的時候通過-v參數指定volume,如果volume不存在則會自動創建。
[root@myserver ~]# docker run -itd --name cc -v /tmp/test:/data:rw bulletinboard:1.0c0fd785c403040c0f3fa0840a738359da5f54aa28f4201cdada0e8de19f8f88a[root@myserver ~]# docker volume lsDRIVER ? ? ? ? ? ? VOLUME NAMElocal ? ? ? ? ? ? ? myvolume[root@myserver ~]# cd /tmp/test/[root@myserver test]# ls[root@myserver test]# echo 111 >a.txt[root@myserver test]#[root@myserver test]#[root@myserver test]# lsa.txt[root@myserver test]#[root@myserver test]#[root@myserver test]# cd[root@myserver ~]# docker exec -it cc bashroot@c0fd785c4030:/usr/src/app# cd /data/root@c0fd785c4030:/data# lsa.txtroot@c0fd785c4030:/data#DOCKER 存儲卷
volume 創建后默認掛載數據目錄:/var/lib/docker/volumes/volumeID/_data
[root@myserver ~]# docker volume inspect myvolume[ ? { ? ? ? "CreatedAt": "2020-07-11T21:59:36-04:00", ? ? ? "Driver": "local", ? ? ? "Labels": {}, ? ? ? "Mountpoint": "/var/lib/docker/volumes/myvolume/_data", ? ? ? "Name": "myvolume", ? ? ? "Options": {}, ? ? ? "Scope": "local" ? }]共享VOLUME
--volumes-from 容器名稱,共享容器的volume
方式一:掛載相同的volume
[root@myserver volumes]# docker run -itd --name server01 -v vtest:/data webserver:v1007d2a504410e435c260d6271d970056fc629880a6654b6777bec206008c4006??docker run -itd --name server02 -v vtest:/data webserver:v1??##創建數據[root@myserver volumes]# docker volume inspect vtest[ ? { ? ? ? "CreatedAt": "2020-07-13T07:59:36-04:00", ? ? ? "Driver": "local", ? ? ? "Labels": null, ? ? ? "Mountpoint": "/var/lib/docker/volumes/vtest/_data", ? ? ? "Name": "vtest", ? ? ? "Options": null, ? ? ? "Scope": "local" ? }][root@myserver volumes]# echo 123>/var/lib/docker/volumes/vtest/_data/a.txt方式二: 使用--volumes-from
docker run -itd --name server02 --volumes-from server01 webserver:v1?# 將server01容器所掛載的卷同步給server02#Docker# #容器云# #DevOps#
總結
以上是生活随笔為你收集整理的docker es持久化_使用docker数据卷对容器数据持久化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 极石 01 全国首批车主开启交付,定位中
- 下一篇: oracle拆分分区语法详解大全_Ora