版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目六:容器的存《Docker容器技术与应用》储管理
学习目标01
能够说出容器数据卷概念。02
使用容器数据卷配置容器的存储。03
理解容器数据卷的工作机制。04
能够实现数据的迁移。Docker采用联合文件系统,文件系统的改动都发生在可写层。在容器的生命周期内容器层是可持续的,但容器被删除后,容器层内的数据也被删除了。生产环境中使用Docker容器,往往需要对数据进行持久化保存,或者多个容器需要共享数据,此时会用到容器数据卷。描
述项目描述
01容器数据卷
02
数据卷挂载
03
容器间数据共享
04
数据卷的备份、恢复与迁移
05管理数据卷任
务分解tasks01任务1:容器数据卷了解容器数据卷的概念使用绑定挂载存储的实现原理了解容器存储文件的方案使用卷存储的实现原理容器数据卷--任务说明
容器数据卷•Docker数据卷默认存储在宿主机的/var/lib/docker/volumes/目录下。
容器数据卷容器运行时会产生数据,如果需要数据持久化保存,并实现容器间的数据互通。---容器数据卷Docker中的数据可以存储在类似于虚拟机磁盘的介质中,这种介质在Docker中称为数据卷。数据卷以目录的形式呈现给Docker,不仅可用来存储Docker应用的数据,还可以支持多个容器间数据共享,并且修改数据卷文件也不会影响镜像。在Docker中使用数据卷,就是在系统中挂载一个文件系统。宿主机临时文件挂载绑定挂载数据卷容器存储文件的两种方案
:数据卷(volumes)和绑定挂载(bind
mounts)
。
Linux平台还可以选择使用tmpfds(临时文件)挂载。数据在容器的文件系统中都会显示为目录或文件。卷、绑定挂载和tmpfs挂载这3种挂载类型最显著的区别是数据在主机中存放的位置不同,文件系统
容器存储文件的方案容器内存Docker区域数据卷的特点如下。(1)容器启动时初始化,如果容器使用的镜像包含数据卷,这些数据也会复制到数据卷中。(2)容器对数据卷的修改是直接生效的。(3)数据卷的变化不会影响镜像的更新,数据卷是独立于联合文件系统,镜像是基于联合文件系统,镜像与数据卷不会相互影响。(4)数据卷是宿主机中的一个目录,与容器生命周期隔离。容器数据卷
卷存储在主机文件系统中由Docker管理的位置,在Linux主机上该位置默认就是/var/lib/docker/volumes目录。
可以以命名方式或匿名方式挂载卷。
卷由Docker创建并管理,卷适合以下应用场景。a)
在多个正在运行的容器之间共享数据。b)
当Docker主机不能保证具有特定目录结构时,卷有助于将Docker主机的配置
与容器运行时解耦。c)
当需要将容器的数据存储到远程主机或云提供商处,而不是本地时。d)
当需要在两个Docker主机之间备份、恢复或迁移数据时。容器挂载类型—卷
绑定挂载可以存储到主机系统的任意位置,甚至会存储到一些重要的系统文件或目录中。。
与卷相比,绑定挂载功能更受限。绑定挂载性能高,但它们依赖于具有特定目录结构的主机文件系统,不能使用Docker命令直接管理绑定挂载。绑定挂载还允许访问敏感文件。
绑定挂载适合以下应用场景。a)在主机和容器之间共享配置文件。b)
在Docker主机上的开发环境和容器之间共享源代码或构建工件。c)当Docker主机上的目录结构保证与容器要求的绑定挂载一致时。容器挂载类型—绑定挂载
tmpfs挂载仅限于运行Linux操作系统的Docker主机使用,它只存储在主机的内存中,不会被写到主机的文件系统中,因此不能持久保存容器的应用数据。
在不需要将数据持久保存到主机或容器中时,tmpfs挂载最合适。
如果容器产生了非持久化数据,那么可以考虑使用tmpfs挂载避免将数据永久存储到任何位置,并且通过避免写入容器的可写层来提高容器的性能。容器挂载类型—tmpfs挂载如何实现容器卷挂载呢?课后思考02任务2:数据卷挂载通过Dockerfile挂载数据卷
数据卷挂载使用命令行挂载数据卷[root@docker~]#docker
run-it
--name
volume
-v
/web/app
Docker
.io/centos[root@83110701ff75
/]#
ls
web/app[root@83110701ff75
/]#
exitexit
数据卷挂载—卷挂载在docker
create或docker
run命令中,使用
-v为容器增加一个数据卷,示例代码如下:"Mounts":
[{"Type":
"volume","Name":"ab66d264dab20639281b30f11e7a753d3012adbf25a64e21596ec88ee58abf1f","Source":"/var/lib/Docker/volumes/ab66d264dab20639281b30f11e7a753d3012adbf25a64e21596ec88ee58abf1f/_data","Destination":
"/web/app","Driver":
"local","Mode":
"","RW":
true,"Propagation":
""}],......数据卷挂载使用docker
inspect查看挂载信息,宿主机已经在/var/lib/docker/volumes/下自动生成了挂载目录。
Source指定了本机路径,
Destination指定了容器内部的路径。[root@docker
~]#
dockerps
-aCONTAINER
ID
IMAGECOMMANDCREATEDSTATUSPORTSNAMESminuteago
UpAbout
aminute
80/tcp
test#nginx
容器正在运行[root@docker
~]#docker
inspect
test#使用
docker
inspect
查看挂载数据卷信息......"Mounts":
[{"Type":
"bind","Source":
"/webapp","Destination":
"/app","Mode":
"","RW":
true,"Propagation":
"rprivate"}],......[root@docker
~]#
docker
run-it
-d--name
test-v
/webapp:/app
Docker
.io/nginx356b5ac7943f716d09c8a61c675b8a70d3ab548127cdf70fba6ead834c5cab0c在后台运行了一个被命名为test的Nginx容器,
通过命令行手动指定宿主机挂载目录。
数据卷挂载—绑定挂载356b5ac7943f
Docker.io/nginx
"nginx
-g
'daemon
......"
About
aroot@92c8dedeadee:/#
ls
/appbin
bootdevetc
home
liblib64media
mnt
opt
proc
rootrun#根目录下多了一个
app
目录[root@docker
~]#ls
/bin
dev
homelib64
mnt
proc
run
srvtmp
varboot
etc
lib
media
optroot
sbinsysusr
web[root@docker
~]#cd
/web/webapp/[root@docker
web]#
ls[root@docker
web]#
验证宿主机与容器间的数据互通(1)创建了一个名为test的Nginx容器,并将容器内的/app目录挂载至宿主机的/web/webapp路径下。[root@docker
~]#
docker
run
-it
--name
test
-v
/web/webapp:/appDocker.io/nginx[root@dockerweb]#
touch
a.txt
b.txt[root@dockerweb]#
lsa.txt
b.txt#在宿主机目录上创建两个文件
a.txt
和
b.txtroot@92c8dedeadee:/#
ls
/app
bin
bootdevetc
home
liblib64
media
mnt
optprocrootrunroot@92c8dedeadee:/#
cdapp/root@92c8dedeadee:/app#
lsa.txt
b.txt#返回容器查看,在挂载目录下有了在宿主机中创建的文件
a.txt、b.txt
验证宿主机与容器间的数据互通(2)在宿主机的/web/webapp目录下创建文件,并返回容器观察目录内容。root@92c8dedeadee:/app#touch
c.txtroot@92c8dedeadee:/app#
lsa.txt
b.txt
c.txt#在容器的挂载数据卷中创建一个
c.txt
文件[root@dockerwebapp]#
lsa.txt
b.txt
c.txt#返回宿主机终端查看挂载卷,多了
c.txt
文件•从以上示例中可以看出,Docker数据卷能够实现Docker容器与宿主机间的数据共享,并且
能够将容器中产生的数据永久保存下来,随时在宿主机查看与修改。•在生产环境中,容器服务的配置文件通常采用数据卷的方式挂载至容器内。为了防止容器内的误操作修改配置文件,在挂载时可以进行权限设置。这样就可以达到在宿主机修改代码,
在容器内查看修改结果的目的。
验证宿主机与容器间的数据互通(3)在容器中创建文件,并返回宿主机观察目录内容。[root@docker
~]#docker
inspect
volume#使用
docker
inspect
查看挂载数据卷信息"Mounts":
[{"Type":
"bind","Source":
"/src/test","Destination":
"/webapp","Mode":
"ro","RW":
false,"Propagation":
"rprivate"}],root@7c04a53151e4:/#
lsbin
dev
home
lib64
mnt
proc
runboot
etc
lib
media
opt
root
sbin#查看容器挂载目录
webapp[root@docker
~]#
cd/src/test/[root@docker
test]#
ls[root@docker
test]#srvtmp
sys
usrvarwebapp[root@docker
~]#
docker
run
-it
--name
volume
-v
/src/test:/webapp:roDocker.io/nginx
/bin/bash
验证宿主机与容器间的数据互通(4)建容器并为数据卷设置ro只读权限。[root@dockertest]#
echo
hello
world
>
a.txt[root@docker
test]#
cat
a.txthello
world#在宿主机的挂载目录中创建一个文件并写入“helloworld
”root@7c04a53151e4:/#cd
webapp/root@7c04a53151e4:/webapp#lsa.txtroot@7c04a53151e4:/webapp#cat
a.txthello
worldroot@7c04a53151e4:/webapp#echo
1>
a.txtbash:a.txt:
Read-only
file
system
验证宿主机与容器间的数据互通(5)在宿主机目录中添加文件,在容器挂载目录中查看文件内容,并修改。
通过Dockerfile挂载数据卷•
用户创建镜像时,通常会在Dockerfile文件中加上VOLUME[/date]来创建含有数据卷
的镜像,并使用该镜像创建包含数据卷的容器。•Dockerfile可以创建多个数据卷,与使用docker
run命令创建数据卷不同,
Dockerfile中的数据卷不能映射到已经存在的本地目录。
在启动容器时,才会创建Dockerfile中指
定的数据卷,
并且以Docker中指定的名称命名。•
运行同样镜像的容器创建的数据卷是不一样的(可以看到不同容器的数据卷地址也是不一样的)。当容器中的数据卷地址不一样时,容器之间就无法共享数据了。[root@docker
~]#cat
DockerfileFROM
centosVOLUME
/root/dateVOLUME
/workVOLUME
test(1)使用Dockerfile中的VOLUME选项来指定挂载数据卷,首先创建Dockerfile并添加内容。通过Dockerfile挂载数据卷[root@docker
~]#dockerbuild
-t
volume
.Sendingbuild
contextto
dockerdaemon
37.38
kBStep
1/4
:FROM
centos--->
1e1148e4cc2cStep
2/4
:VOLUME
/root/date--->Running
in
596d28ff2267--->
416188d94279Removing
intermediatecontainer
596d28ff2267Step
3/4
:VOLUME
/work--->Running
in
cae822949abb--->
2f15cedd0062Removing
intermediatecontainercae822949abbStep
4/4
:VOLUME
test--->Running
in
7cbc12964c13--->
ad48b99a98b7Removing
intermediatecontainer
7cbc12964c13Successfullybuilt
ad48b99a98b7通过Dockerfile挂载数据卷(2)使用docker
build构建镜像。
通过Dockerfile挂载数据卷(3)运行该镜像为容器,并查看容器的数据卷挂载情况。该容器挂载了三个数据卷,容器内的目录为Dockerfile中指定的目录,宿主机中数据卷的位置在/var/lib/Docker/volumes/下生成,并且数据卷的地址是随机生成的。实现数据卷的两种挂载
实操练习《Docker容器技术与应用》下期见!
任务3:容器间数据共享03
容器间数据共享--任务说明了解容器间数据共享的原理实现容器间的数据共享宿主机
容器间数据共享运行容器时宿主机会随机生成挂载目录,无法保持目录地址一致,所以无法实现容器间的数据共享。数据卷容器可以有效地解决这个问题:将已命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器叫做数据卷容器。数据卷容器挂载了一个宿主机目录,其他容器连接数据卷容器来实现本地文件系统容器1容器2数据容器目录/文件容器3数据的共享。[root@docker
~]#
docker
run
-it
--name
volume-container
-v
/volume1
-v
/volume2Docker.io/centos[root@a22e708d606f
/]#
lsanaconda-post.log
etc
lib64
opt
run
sys
varbinhome
media
procsbintmp
volume1devlib
mnt
rootsrv
usrvolume2容器间数据共享(1)启动一个名为volume-container容器,此容器包含两个数据卷/volume1和/volume2(这两个数据卷目录是在容器中的,
运行容器时会自动创建)
。[root@docker
~]#docker
inspect
volume-container
|grep
volume
"Name":
"/volume-container","Type":
"volume","Source":"/var/lib/Docker/volumes/dabc02487a3d0e033ea67e35a4a82478e66fd3431a54c66e573
d9d288d85e278/
data","Destination":
"/volume2","Type":
"volume","Source":"/var/lib/Docker/volumes/80a2e248d31224537b97ba73d2a38d5fd1f28692b2b17705cfb
2d56260937e4e/
data","Destination":
"/volume1","/volume1":
{},"/volume2":
{}#查看
Mount
挂载信息[root@docker
~]#
cd/var/lib/Docker/volumes/80a2e248d31224537b97ba73d2a38d5fd1f28692b2b17705cfb2
d56260937e4e/data/[root@docker
data]#ls[root@docker
data]#echo
hello
container1
>a.txt[root@docker
data]#
cd/var/lib/Docker/volumes/dabc02487a3d0e033ea67e35a4a82478e66fd3431a54c66e573d
9d288d85e278/data/[root@docker_data]#echo
hello
container2
>b.txt(2)查看挂载信息并在宿主机中为数据卷添加文件。容器间数据共享[root@docker
~]#
docker
run
-it
--name
test1-container--volumes-fromvolume-container
Docker
.io/centos[root@e96655548eb6
/]#
lsanaconda-post.log
etc
lib64
opt
run
sys
varbinhome
media
procsbintmp
volume1devlib
mnt
rootsrv
usrvolume2[root@e96655548eb6
/]#cat
volume1/a.txthello
container1[root@e96655548eb6
/]#cat
volume2/b.txthello
container2(3)创建容器test1-container,用
—volumes-from参数挂载volume-container中的数据卷。
容器间数据共享[root@docker
~]#docker
stop
volume-containervolume-container[root@docker
~]#docker
rm
volume-containervolume-container[root@docker
~]#
docker
ps
-aCONTAINER
ID
IMAGE
COMMANDSTATUS
PORTS
NAMESe96655548eb6Docker.io/centos"/bin/bash"Up
20minutes
test1-container#删除了数据卷容器[root@docker
~]#
docker
run-it
--name
test2-containertest1-containerDocker.io/centos[root@7bb687139994
/]#
lsanaconda-post.log
etc
lib64
opt
run
sys
varbin
home
media
proc
sbin
tmp
volume1dev
lib
mnt
root
srv
usr
volume2[root@7bb687139994
/]#
cat
/volume1/a.txthello
container1[root@7bb687139994
/]#
cat
/volume2/b.txthello
container2#成功挂载数据卷即使删除了初始的数据卷容器volume-container或其他容器,只要有容器在使用该数据卷,里面的数据就不会丢失。UpUpe96655548eb619minutesa22e708d606f31minutesDocker.io/centos
"/bin/bash"
test1-containerDocker.io/centos
"/bin/bash"
volume-container(4)下面将初始数据卷容器删除,观察数据卷还能否正常工作。
容器间数据共享[root@docker
~]#
docker
ps
-aCONTAINER
ID
IMAGE
COMMANDSTATUS
PORTS
NAMESCREATED20
minutes
ago--volumes-fromCREATED19
minutes
ago31
minutes
ago[root@docker
~]#
docker
ps
-aCONTAINER
ID
IMAGE
COMMAND
CREATEDSTATUS
PORTS
NAMES7bb687139994Docker
.io/centos
"/bin/bash"
6minutes
agoExited
(0)
2
seconds
ago
test2-containere96655548eb6Docker
.io/centos"/bin/bash"About
an
hour
agoUpAbout
anhour
test1-container[root@docker
~]#docker
rm
7bb6871399947bb687139994[root@docker
~]#docker
stop
e96655548eb6e96655548eb6[root@docker
~]#docker
rm
e96655548eb6e96655548eb6[root@docker
~]#
docker
ps
-aCONTAINER
ID
IMAGE
COMMAND
CREATEDSTATUS
PORTS
NAMES#删除所有容器[root@docker~]#
cd/var/lib/Docker/volumes/dabc02487a3d0e033ea67e35a4a82478e66fd3431a54c66e573d
9d288d85e278/data/[root@docker
data]#lsb.txt[root@docker
data]#cat
b.txthello
container2#宿主机本地的数据卷文件还存在即使删除了所有容器,数据卷也保留在宿主机中,这大大保证了
数据的安全性。
容器间数据共享(5)删除所有容器,再观察数据卷《Docker容器技术与应用》下期见!实现容器间的数据共享
实操练习
04
任务4:数据卷的备份、恢复和迁移容器间数据共享--任务说明了解数据卷的恢复和迁移了解数据卷的备份方法[root@docker
~]#
docker
run
-it
--name
data-volume
-v
/var/volume1
-v/var/volume2Docker
.io/centos[root@dc45a951e182
/]#
lsanaconda-post.log
dev
home
lib64
mnt
proc
run
srv
tmp
varbinetclib
mediaoptrootsbinsysusr[root@dc45a951e182
/]#
ls/var/[root@dc45a951e182
/]#
echo
hello
container1
>
/var/volume1/a.txt[root@dc45a951e182
/]#echo
hello
container
>
/var/volume2/b.txt
[root@dc45a951e182
/]#
cat/var/volume1/a.txthello
container1[root@dc45a951e182
/]#
cat/var/volume2/b.txthello
container(1)创建一个名为data-volume的CentOS容器,
挂载两个数据卷/var/volume1和/var/volume2,并在挂载目录中创建文件。adm
empty
kerberos
lock
nisrun
volume1cache
games
lib
log
optspool
volume2
数据卷的备份db
gopher
local
preserve
tmp
yp[root@docker
~]#
docker
run
--rm
--volumes-from
data-volume
-v/root/backup:/backupDocker
.io/centostarcvf/backup/backup1.tar/var/volume1#--rm:该容器执行完成命令后自动删除#挂载宿主机/root/backup目录到容器的/backup目录#创建运行容器/var/volume1//var/volume1/a.txttar:Removing
leading
`/'
frommember
names#执行
tar
命令,备份数据卷,停止并删除容器[root@docker
~]#docker
ps-aCONTAINER
ID
IMAGE
COMMAND
CREATEDSTATUSPORTSNAMES(2)使用—volumes-from参数来创建一个挂载数据卷的容器,从宿主机挂载要存放备份数据的目录到容器的备份目录,并备份数据卷中的数据。完成后使用—
rm参数删除容器。dc45a951e182Docker.io/centos
"/bin/bash"17
minutes
agoUp
17minutesdata-volume#此时容器已删除[root@docker
~]#ls
/root/backup/backup1.tar#备份文件已存在
数据卷的备份在生产环境中,人们很少会去修复一个容器,通常是将原来的容器删除,并重新运行一个新的容器继续提供服务。这时就需要用到Docker数据卷的恢复与迁移技术。恢复数据卷是将备份数据恢复到原容器中。迁移数据卷是将备份数据恢复到新建容器中。
数据卷的恢复[root@docker
~]#ls
/root/backup/backup1.tar
backup2.tar
backup.tar#已经做好的数据备份[root@docker
~]#docker
ps-aCONTAINER
ID
IMAGE
COMMAND
CREATEDSTATUSPORTSNAMES[root@docker
~]#dockerattach
data-volume#进入数据卷容器[root@dc45a951e182
/]#
lsanaconda-post.log
dev
home
lib64
mnt
proc
run
srv
tmp
varbinetclib
mediaoptrootsbinsysusr[root@dc45a951e182
/]#
ls/var/volume1/a.txt[root@dc45a951e182
/]#
ls/var/volume2b.txt[root@dc45a951e182
/]#
rm-rf
/var/volume1/a.txt[root@dc45a951e182
/]#
rm-rf
/var/volume2/b.txt数据卷的恢复(1)为了模拟数据丢失,将容器中文件/var/volume1/a.txt与var/volume2/b.txt删除。dc45a951e182Docker
.io/centos
"/bin/bash"2
hours
agoUp
2hoursdata-volume[root@docker
~]#
docker
run
--rm
--volumes-from
data-volume
-v/root/backup/:/backup
Docker
.io/centos
tar
xvf
/backup/backup.tar
-C
/#将容器挂载到数据卷容器
data-volume#将宿主机的备份文件存放目录挂载至容器#执行解压操作#-C
后面的路径用于存放恢复后的数据var/volume1/var/volume1/a.txtvar/volume2/var/volume2/b.txt
数据卷的恢复(2)通过创建新容器对数据卷容器进行挂载,并将宿主机数据目录挂载到容器,再将解压后的数据存放到指定路径下。[root@docker
~]#docker
attach
data-volume[root@dc45a951e182
/]#
ls/var/volume1/a.txt[root@dc45a951e182
/]#
ls/var/volume2/b.txt
数据卷的恢复(3)进入容器查看数据是否成功恢复。[root@docker
~]#
docker
run
-it
-v
/var/volume1
-v
/var/volume2
--namenew-container
Docker
.io/centos
/bin/bash#创建一个新容器,并挂载要恢复数据的目录[root@ba5c8854260f
~]#
ls/var/volume1/[root@ba5c8854260f
~]#
ls/var/volume2/数据卷的迁移(1)新建容器new-container,并解压备份文件到新的容器数据卷volume1与volume2。docker
run
-it
--rm
--volumes-from
new-container
-v
Docker
.io/centostar
xvf
/backup/backup.tar
-C
/var/volume1/var/volume1/a.txtvar/volume2/var/volume2/b.txt[root@docker
~]#docker
attachnew-container[root@ba5c8854260f
~]#
ls/var/volume1/a.txt[root@ba5c8854260f
~]#
ls/var/volume2/b.txt[root@docker~]#
/root/backup/:/backup数据卷的迁移(2)将备份数据迁移到容器new-container中。[root@docker~]#
docker
run-it-v
/var/volume1--name
new-containerDocker.io/centos
/bin/bash[root@86aa85ef715e
/]#
ls/var/adm
db
games
kerberos
local
log
nis
preserve
spool
volume1cache
empty
gopher
lib
lock
mailopt
run
tmp
yp[root@86aa85ef715e
/]#
ls/var/volume1/#只挂载了一个目录[root@docker
~]#
docker
run-it
--rm
--volumes-from
data-volume
-v
/root/backup/:/backup
Docker
.io/centos
tar
xvf
/backup/backup.tar
-C
/var/volume1/var/volume1/a.txtvar/volume2/var/volume2/b.txt[root@docker
~]#docker
attach
new-container[root@86aa85ef715e
/]#
ls/var/adm
db
games
kerberos
local
log
nis
preserve
spool
volume1cache
empty
gopher
lib
lock
mailopt
run
tmp
yp[root@86aa85ef715e
/]#
ls/var/volume1/a.txt
数据卷的迁移(3)建议新容器创建时挂载的数据卷路径与先前备份的数据卷路径保持一致,
否则会出现数据恢复不全的情况。[root@docker~]#
docker
run
-it
-v
/var/data
--name
new-containerDocker.io/centos
/bin/bash[root@1c34a17a56cf
/]#
ls/var/data/#新建容器,
已挂载数据卷,没有文件数据docker
run
-it--rm
--volumes-from
new-container
-vDocker.io/centos
tar
xvf/backup/backup.tar-C/var/datavar/volume1/var/volume1/a.txtvar/volume2/var/volume2/b.txt[root@docker
~]#docker
attach
new-container#进入容器查看[root@1c34a17a56cf
/]#
ls/var/data/var[root@1c34a17a56cf
/]#
ls/var/data/var/volume1
volume2[root@1c34a17a56cf
/]#
ls/var/data/var/volume1a.txt[root@1c34a17a56cf
/]#
ls/var/data/var/volume2b.txt[root@1c34a17a56cf
/]#tree
/var/data/#查看目录结构/var/data/`--
var|--
volume1|
`--
a.txt`--
volume2`--
b.txt3
directories,
2
files[root@docker~]#
/root/backup/:/backup
数据卷的迁移(4)
为了避免这种情况的发生,可以修改-C参数后面的路径,
使数据正常恢复。《Docker容器技术与应用》下期见!实现数据卷的备份、恢复和迁移
实操练习05任务。:管理数据卷了解数据卷管理中的常用命令
管理数据卷--任务说明使用命令管理数据卷•数据卷最大的优势是可以用来做持久化数据,它的生命周期是独立的,Docker不会在容器被删除后自动删除数据卷,也不存在类似垃圾回收的机制来处理没有被任何容器使用的数据卷。但难免会有无用的数据卷,用户可以通过在删除容器的命令中添加参数,在删除容器的同时删除数据卷。•Docker数据卷可以通过命令与容器关联,删除容器时,数据卷也随之删除。•
docker
rm
-v•删除容器时添加-v参数会将数据卷一并删除。•
docker
run
--rm•创建、运行容器时添加--rm参数,容器运行结束时容器与数据卷会被一并删除。•如果不对数据卷进行及时清理,/var/lib/Docker/volumes/目录下就会产生许多残留目录。但删除的数据卷是无法找回的,建议再三确认之后在执行操作。
数据卷的管理[root@docker
~]#docker
run
-it
-v/data
--name
test2
Docker.io/centos
[root@docker
~]#docker
inspect
test2
|grep
Source"Source":"/var/lib/Docker/volumes/a2955c9ca7c3f65765b59e20b2c6c4559144b8c14cee1f408dcb8797ae45a61a/
data",[root@docker
~]#
ls/var/lib/Docker/volumes/06d67c0721317d5d93b2bc8a4b12991d99ef4ac39e84ae4d581fdb41042f830c0bcd045e068ca97f27f16d7a8a9cbc65bc43cc630af36c25c49313f9f5047247
1c0d04e339a64f3c99b62ba54e722946b2d98f95dd751f752a4f76544aa6eb40
4bba849a01e12864e92866e28671534a3b2fe1cfc0cd0f038bb4dab76a3bc942
5ea1e4d807
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部转岗规章制度范本
- 景区内部车辆管理制度
- 机关内部健身房制度
- 机关内部激励关怀制度
- 机关办公室内部管理制度
- 机械加工内部规章制度
- 武汉体育学院《火电厂热力设备及系统B》2024-2025学年第二学期期末试卷
- 检验科内部管理制度
- 民宿内部各项规章制度
- 民营养老院内部管理制度
- 2026年常州纺织服装职业技术学院单招职业适应性测试题库及答案详解(新)
- 乳癌化疗患者的护理措施
- 2026年苏州信息职业技术学院单招职业适应性测试题库及答案解析
- 第4课 致敬劳动者 第1课时 课件+视频 2025-2026学年道德与法治三年级下册统编版
- 2025年驾照三力测试试题题库及答案
- 2026年共享工厂项目投资计划书
- 2026年工厂节后复工复产安全培训
- 《康复评定技术》课件-协调评定
- 厂房换板施工方案(3篇)
- 女职工法律知识讲座课件
- 2026年及未来5年中国车桥总成行业发展前景预测及投资战略研究报告
评论
0/150
提交评论