《容器化开发竞赛培训》-6.存储管理_第1页
《容器化开发竞赛培训》-6.存储管理_第2页
《容器化开发竞赛培训》-6.存储管理_第3页
《容器化开发竞赛培训》-6.存储管理_第4页
《容器化开发竞赛培训》-6.存储管理_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六:容器的存《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

mail

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论