容器可以承載微服務(wù),也可以承載數(shù)據(jù)庫,微服務(wù)的配置文件,數(shù)據(jù)庫的數(shù)據(jù)文件,都需要持久化,也就是即使容器銷毀了,這些數(shù)據(jù)也需要存在。
一方面可以釆用手工方式用命令行拷貝,在容器很多的情況下,是不可取的。另一方面可以自動保存到宿主機或者遠(yuǎn)程存儲上。
容器中將用于存儲的文件目錄稱為卷(Volume),可見容器的存儲便是對目錄的操作。
可以直接將容器目錄映射到主機目錄,稱為數(shù)據(jù)卷;也可以構(gòu)建專門掛載數(shù)據(jù)卷的容器,稱為數(shù)據(jù)卷容器。
1. docker cp命令
首先啟動名稱為dockervolumtest1的ubuntu環(huán)境,并以/bin/bash方式進(jìn)入到容器。
root@linux:/home# docker run -it --name="dockervolumtest1" ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
125a6e411906: Pull complete
Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Status: Downloaded newer image for ubuntu:latest
root@51d152e09898:/# 進(jìn)入到容器
再新建dockerdata1.log作為測試文件。
root@51d152e09898:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@51d152e09898:/# cd tmp
root@51d152e09898:/tmp# ls
root@51d152e09898:/tmp# touch dockerdata1.log
root@51d152e09898:/tmp# echo this is docker data test > dockerdata1.log
root@51d152e09898:/tmp# cat dockerdata1.log
this is docker data test
root@51d152e09898:/tmp#
使用docker cp命令在主機和容器進(jìn)行數(shù)據(jù)拷貝。
命令格式:
docker cp 容器ID:/目錄 主機目錄
root@linux:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51d152e09898 ubuntu "/bin/bash" 4 minutes ago Up 4 minutes dockervolumtest1
root@linux:/# docker cp 51d152e09898:/tmp /
root@linux:/# cd tmp
root@linux:/tmp# ls
dockerdata1.log
root@linux:/tmp# cat dockerdata1.log
this is docker data test
root@linux:/tmp#
2. 數(shù)據(jù)卷
使用docker run命令,并指定-v選項,便可在啟動容器的時掛載數(shù)據(jù)卷;
命令格式1:
docker run -v /宿主機路徑:容器內(nèi)路徑 鏡像名
# 如指定的目錄不存在,系統(tǒng)會自動創(chuàng)建
root@linux:/home# docker run -it --name="volummnttest1" -v /tmp/hostdir:/tmp/dockerdir ubuntu /bin/bash
root@ae1b5eda679d:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
# 新建測試文件volum.log
root@ae1b5eda679d:/# cd /tmp/dockerdir/
root@ae1b5eda679d:/tmp/dockerdir# ls
root@ae1b5eda679d:/tmp/dockerdir# touch volum.log
root@ae1b5eda679d:/tmp/dockerdir# echo this is a volum test > volum.log
root@ae1b5eda679d:/tmp/dockerdir#
新建命令窗口,查看Host宿主機的文件信息:
root@linux:/tmp/hostdir# ll
total 12
drwxr-xr-x 2 root root 4096 May 12 17:12 ./
drwxrwxrwt 16 root root 4096 May 12 17:11 ../
-rw-r--r-- 1 root root 21 May 12 17:13 volum.log
root@linux:/tmp/hostdir# cat volum.log
this is a volum test
root@linux:/tmp/hostdir#
命令格式2:docker run -v 容器內(nèi)路徑 鏡像名
# 不指定主機目錄,系統(tǒng)會默認(rèn)存儲在/var/lib/docker/volumes/容器ID目錄
root@linux:/tmp/hostdir# docker run -it --name="volummnttest2" -v /tmp/dockerdir2 ubuntu /bin/bash
root@cf7f42544b8f:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@cf7f42544b8f:/# cd /tmp/
root@cf7f42544b8f:/tmp# ls
dockerdir2
root@cf7f42544b8f:/tmp#
新建命令窗口,查看volum2.log的相關(guān)信息:
root@linux:/# cd /var/lib/docker/
root@linux:/var/lib/docker# ls
buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
root@linux:/var/lib/docker# cd volumes/
root@linux:/var/lib/docker/volumes# ls
9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b backingFsBlockDev metadata.db
root@linux:/var/lib/docker/volumes# cd 9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b# ls
_data
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b# cd _data/
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data# ls
volum2.log
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data# cat volum2.log
this is for volum2 test
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data#
也可通過docker inspect 容器ID,查看詳情
3. 數(shù)據(jù)卷容器
首先啟動容器volumedockertest
root@linux:/# docker run -it --name="volumedockertest" -v volumebase:/tmp/volumbasedata ubuntu /bin/bash
root@2933ebe42b98:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@2933ebe42b98:/# cd tmp
root@2933ebe42b98:/tmp# ll
total 12
drwxrwxrwt 1 root root 4096 May 12 09:50 ./
drwxr-xr-x 1 root root 4096 May 12 09:50 ../
drwxr-xr-x 2 root root 4096 May 12 09:50 volumbasedata/
再啟動容器volumedockertest1,使用--volumes-from參數(shù)繼承的volumedockertest數(shù)據(jù)卷。
root@linux:/# docker run -it --name="volumedockertest1" --volumes-from volumedockertest ubuntu /bin/bash
root@9ee901a1d422:/# ls
新建測試文件:
root@9ee901a1d422:/tmp/volumbasedata# echo this is test add data > basedata.log
root@9ee901a1d422:/tmp/volumbasedata#
宿主機查看文件
root@linux:~# cat /var/lib/docker/volumes/volumebase/_data/basedata.log
this is test add data
root@linux:~#
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3851瀏覽量
64711 -
容器
+關(guān)注
關(guān)注
0文章
499瀏覽量
22128 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
143瀏覽量
7437
發(fā)布評論請先 登錄
相關(guān)推薦
深圳卷對卷打孔機系統(tǒng),CCD雙頭打孔提高生產(chǎn)效率
深圳卷對卷對位系統(tǒng),對點對色準(zhǔn)確,提高設(shè)備印刷品質(zhì)
深圳卷對卷對位系統(tǒng)怎么樣呢?
深圳CCD雙頭卷對卷打孔機系統(tǒng)有什么特點?
計算機程序設(shè)計藝術(shù) (含第1卷,第2卷,第3卷 基本算法)
![計算機程序設(shè)計藝術(shù) (含第1<b class='flag-5'>卷</b>,第2<b class='flag-5'>卷</b>,第3<b class='flag-5'>卷</b> 基本算法)](https://file.elecfans.com/web2/M00/48/B9/pYYBAGKhtByAc8oGAAAihqZYyog491.jpg)
可卷對卷制造的薄膜型非晶硅太陽能電池
技術(shù)曝光:TRADIM的卷對卷液晶面板構(gòu)件
![技術(shù)曝光:TRADIM的<b class='flag-5'>卷</b>對<b class='flag-5'>卷</b>液晶面板構(gòu)件](https://file1.elecfans.com//web2/M00/A5/92/wKgZomUMOQ2AVTe-AAB2OIomZog624.jpg)
Cyclone 器件數(shù)據(jù)手冊(第一卷)
Cyclone器件數(shù)據(jù)手冊(第二卷)
【存儲數(shù)據(jù)恢復(fù)】H3C FlexStorage存儲卷刪除的數(shù)據(jù)恢復(fù)案例
![【存儲<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)】H3C FlexStorage存儲<b class='flag-5'>卷</b>刪除的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file1.elecfans.com//web2/M00/82/C5/wKgZomRh3EmAYC2mAACFcKZS23k587.jpg)
卷煙廠卷包車間數(shù)據(jù)采集遠(yuǎn)程監(jiān)控系統(tǒng)
![卷煙廠<b class='flag-5'>卷</b>包車間<b class='flag-5'>數(shù)據(jù)</b>采集遠(yuǎn)程監(jiān)控系統(tǒng)](https://file1.elecfans.com//web2/M00/89/14/wKgZomR4SX6AEn2rAACaSCfvI-g379.jpg)
服務(wù)器數(shù)據(jù)恢復(fù)—存儲中卷被刪除后重建如何恢復(fù)被刪除卷的數(shù)據(jù)?
服務(wù)器數(shù)據(jù)恢復(fù)—OceanStor存儲中卷數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)案例
![服務(wù)器<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—OceanStor存儲中<b class='flag-5'>卷</b><b class='flag-5'>數(shù)據(jù)</b>丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file.elecfans.com/web2/M00/A5/E9/poYBAGRkhqGAZbhSAAQ96kwY2Ew273.png)
評論