容器数据卷

容器数据卷

容器数据卷介绍

Docker容器运行时产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷来实现容器内数据与我们指定的目录文件同步,当某一方数据发生修改时,另一方也随之改变。

因此,容器的持久化和同步操作!容器间数据也是可以共享的!

使用数据卷

方式一:直接使用-v命令挂载

本机中装有的镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ReGa6flw-1648561803297)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220329210304975.png)]

用以下命令运行centos镜像

[root@iZwz9bpgwmtcokdzlg5sv0Z ~]# docker run -it -v /home/test:/home centos /bin/bash
[root@8fe371c5f10c /]# cd /
[root@8fe371c5f10c /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

这里/home/test为主机目录,/home centos为容器目录,有时候会在容器目录后加上:ro或者:rw,代表容器目录的只读或者可读可写权限。这是指定的主机目录被挂载。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c0qULS1K-1648561803298)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220329211355959.png)]

修改主机内的数据,观察容器是否同步(测试成功)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78HeGx4W-1648561803298)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220329212317462.png)]

再来测试(测试通过)

  1. 停止容器
  2. 主机上修改文件
  3. 启动容器
  4. 容器内的数据依旧是同步的!

具名与匿名挂载

匿名挂载:即用命令行来实现数据卷挂载时,不指定主机挂载路径,直接使用 -v 容器路径。

[root@iZwz9bpgwmtcokdzlg5sv0Z ~]# docker run -it -v /home centos /bin/bash

具名挂载:即用一个自定义的名字来取代主机路径。

[root@iZwz9bpgwmtcokdzlg5sv0Z test]# docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
515d09242c0ffaafb566b60fdfa7491832f0b994b0002b44db8d37a9fcdc0be9
[root@iZwz9bpgwmtcokdzlg5sv0Z test]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
515d09242c0f   nginx     "/docker-entrypoint.…"   35 seconds ago   Up 34 seconds   0.0.0.0:49153->80/tcp, :::49153->80/tcp   nginx01
#查看所有卷
[root@iZwz9bpgwmtcokdzlg5sv0Z test]# docker volume ls
DRIVER    VOLUME NAME
local     8a29251fcab0df56f5f048d8b6da913ffde329575de7fb1114d6002caa4632a3
local     juming-nginx

#查看数据卷的详细信息
[root@iZwz9bpgwmtcokdzlg5sv0Z test]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2022-03-29T21:37:25+08:00",
        "Driver": "local",
        "Labels": null,
        #这里可查看主机被挂载目录
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]

根据上述,三种挂载方式:

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
-v	容器内路径					# 匿名挂载
-v	卷名:容器内路径			   # 具名挂载
-v /主机路径:容器内路径			  # 指定路径挂载

除此之外,还有一种挂载方式dockerFile

DockerFile

dockerFile是用来构建docker镜像的文件!命令参数脚本!

构建步骤

1. 编写一个dockerFile文件

2.docker build 构建成为一个镜像

3. docker run 运行镜像

4. docker push 发布镜像(DockerHub、阿里云镜像)

基础知识:

  1. 每个保留关键字(指令)都是必须大写字母
  2. 执行从上到下顺序执行
  3. # 表示注释
  4. 每个指令都会创建提交一个新的镜像层,并提交!

在这里插入图片描述

dockerFile是面向开发的, 我们以后要发布项目, 做镜像, 就需要编写dockefile文件, 这个文件十分简单!

Docker镜像逐渐成为企业的交互标准,必须要掌握!

步骤:开发,部署, 运维… 缺一不可!

DockerFile: 构建文件, 定义了一切的步骤,源代码

DockerImages: 通过DockerFile构建生成的镜像, 最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务器

DockerFile指令说明

在这里插入图片描述

FROM			# 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的, 姓名+邮箱
RUN				# 镜像构建的时候需要运行的命令
ADD				# 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 保留端口配置
CMD				# 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD			# 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY			# 类似ADD, 将我们文件拷贝到镜像中
ENV 			# 构建的时候设置环境变量!

我们可以在编写命令脚本时用volume来规定挂载路径。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值