Docker(五)容器数据卷

Docker(一)
Docker(二)
Docker(三)
Docker(四)
Docker(五)
Docker(六)
Docker(七)
Docker(八)

容器数据卷

什么是容器数据卷

数据如果都在容器中,若容器删除则数据丢失。
需求:数据持久化,容器之间可以有一个数据共享的技术
Docker容器中产生的数据,同步到本地,就是卷技术。
说白了就是目录的挂载,将容器的目录挂载到Linux上。

总结一句话:容器的持久化和同步操作,容器间也是可以数据共享的

使用数据卷

方式一:直接使用命令挂载 -v
方式二:通过便携脚本,在生成镜像时就进行挂载

docker run -it -v -P主机端口,容器内端口
# 举例
docker run -it -v /home/ceshi:/home centos /bin/bash
# 将虚拟机中国的home/ceshi与本地/home同步,当虚拟机或本地数据发生变化时,另一端数据也会发生变化(双向绑定)。但是如果虚拟机删除了数据,本地并不会将数据删除。

好处:以后只需要在本地修改数据即可,容器内会自动同步。如果虚拟机删除了数据,本地并不会将数据删除。

具名和匿名挂载

# 匿名挂载
#通过 -v 容器内路径 指令进行挂载
# 举例
docker run -d -P --name nginx01 -v  /ect/nginx nginx
# 查看所有卷的情况
docker volume ls
# 这里发现ls打印出来的信息都是如下样式,这种就是匿名挂载,其中挂载的名称为乱码的一传字符串,并且只写了容器内的路径,没有容器外的路径,如下:
local xxxxxxxxx
local xxxxxxxxx
# 查看详细信息
docker volume inspect 


# 具名挂载 
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
# 通过docker volume ls 发现打印的是如下:
DRIVE  	VOLUME NAME
local  	juming-nginx

# 通过-v 卷名:容器内路径 进行具名挂载
# 查看一下具体卷
docker volume inspect juming-nginx
  • 所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes目录下,
    /var/lib/docker/volumes/*******(卷名)/_data------>具体路径
  • 我们通过具名挂载可以方便地找到我们的一个卷,大多数情况下我们用的都是具名挂载。

如何确定是具名挂载还是匿名挂载,还是只从路径挂载:

-v 容器内路径   # 匿名挂载
-v 卷名:容器内路径  # 具名挂载
-v /宿主机路径:容器内路径  # 指定路径挂载

拓展:

# ro readonly  # 只读
# rw readwrite  #可读可写

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

# 一旦设定了容器的访问权限,容器对我们挂载出来的内容就有限定了

# ro 只要看到ro,就说明只能通过宿主机去操作,容器内部无法操作

初识Dockerfile

Dockerfile就是用来构建docker镜像的构建文件。实际上就是一端命令脚本,通过脚本可以生成一个镜像。
镜像是一层一层的,所以脚本也是一个一个的命令,每个命令都是一层

# 创建一个dockerfile 文件,名字可以随机,建议Dockerfile 

# 文件中的内容,指令都是大写 ,参数;例如:
FROM centos
VOLUME ["volume01","volume02"]  # 生成的是匿名挂载

CMD echo "----end----"
CMD /bin/bash

# 这里的每个命令就是镜像的一层

# 执行该命令生成一个新的镜像
docker build -f /home/docker-test-volume/dockerfile1 -t proger/centos:1.0 .
docker images
# 输出:
REPOSITORY 		TAG 		IMAGE_ID		CREATED			SIZE
proger/centos	1.0			5d04f189a434	22 seconds age	237MB

数据卷容器

例如:多个mysql同步数据在这里插入图片描述

  • 当父容器被删除,预期数据共享的容器数据依旧存在(数据双向拷贝的概念
  • 结论:容器之间配置信息的传递,数据卷容器的说明周期一直持续到没有容器使用为止,但是一旦持久到本地,本地的数据是不会删除的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值