容器可以承載微服務(wù),也可以承載數(shù)據(jù)庫(kù),微服務(wù)的配置文件,數(shù)據(jù)庫(kù)的數(shù)據(jù)文件,都需要持久化,也就是即使容器銷毀了,這些數(shù)據(jù)也需要存在。
一方面可以釆用手工方式用命令行拷貝,在容器很多的情況下,是不可取的。另一方面可以自動(dòng)保存到宿主機(jī)或者遠(yuǎn)程存儲(chǔ)上。
容器中將用于存儲(chǔ)的文件目錄稱為卷(Volume),可見(jiàn)容器的存儲(chǔ)便是對(duì)目錄的操作。
可以直接將容器目錄映射到主機(jī)目錄,稱為數(shù)據(jù)卷;也可以構(gòu)建專門掛載數(shù)據(jù)卷的容器,稱為數(shù)據(jù)卷容器。
1. docker cp命令
首先啟動(dòng)名稱為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作為測(cè)試文件。
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ī)和容器進(jìn)行數(shù)據(jù)拷貝。
命令格式:
docker cp 容器ID:/目錄 主機(jī)目錄
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選項(xiàng),便可在啟動(dòng)容器的時(shí)掛載數(shù)據(jù)卷;
命令格式1:
docker run -v /宿主機(jī)路徑:容器內(nèi)路徑 鏡像名
# 如指定的目錄不存在,系統(tǒng)會(huì)自動(dò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
# 新建測(cè)試文件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宿主機(jī)的文件信息:
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)路徑 鏡像名
# 不指定主機(jī)目錄,系統(tǒng)會(huì)默認(rèn)存儲(chǔ)在/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#
也可通過(guò)docker inspect 容器ID,查看詳情
3. 數(shù)據(jù)卷容器
首先啟動(dòng)容器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/
再啟動(dòng)容器volumedockertest1,使用--volumes-from參數(shù)繼承的volumedockertest數(shù)據(jù)卷。
root@linux:/# docker run -it --name="volumedockertest1" --volumes-from volumedockertest ubuntu /bin/bash
root@9ee901a1d422:/# ls
新建測(cè)試文件:
root@9ee901a1d422:/tmp/volumbasedata# echo this is test add data > basedata.log
root@9ee901a1d422:/tmp/volumbasedata#
宿主機(jī)查看文件
root@linux:~# cat /var/lib/docker/volumes/volumebase/_data/basedata.log
this is test add data
root@linux:~#
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3902瀏覽量
65791 -
容器
+關(guān)注
關(guān)注
0文章
507瀏覽量
22370 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
145瀏覽量
7676
發(fā)布評(píng)論請(qǐng)先 登錄
深圳卷對(duì)卷打孔機(jī)系統(tǒng),CCD雙頭打孔提高生產(chǎn)效率
深圳卷對(duì)卷對(duì)位系統(tǒng),對(duì)點(diǎn)對(duì)色準(zhǔn)確,提高設(shè)備印刷品質(zhì)
深圳卷對(duì)卷對(duì)位系統(tǒng)怎么樣呢?
深圳CCD雙頭卷對(duì)卷打孔機(jī)系統(tǒng)有什么特點(diǎn)?
智能組卷中組卷目標(biāo)的滿足性檢查與處理
計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) (含第1卷,第2卷,第3卷 基本算法)

技術(shù)曝光:TRADIM的卷對(duì)卷液晶面板構(gòu)件

Cyclone 器件數(shù)據(jù)手冊(cè)(第一卷)
Cyclone器件數(shù)據(jù)手冊(cè)(第二卷)
【存儲(chǔ)數(shù)據(jù)恢復(fù)】H3C FlexStorage存儲(chǔ)卷刪除的數(shù)據(jù)恢復(fù)案例

卷針形狀對(duì)卷芯質(zhì)量的影響

卷煙廠卷包車間數(shù)據(jù)采集遠(yuǎn)程監(jiān)控系統(tǒng)

服務(wù)器數(shù)據(jù)恢復(fù)—存儲(chǔ)中卷被刪除后重建如何恢復(fù)被刪除卷的數(shù)據(jù)?
服務(wù)器數(shù)據(jù)恢復(fù)—OceanStor存儲(chǔ)中卷數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)案例

評(píng)論