docker (容器数据卷、创建、读写规则)-day03

一、容器数据卷概念

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:数据卷的设计目的就是数据的持久化完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

类似于Redis中的rdb和aof文件,redis挂了也可以覆盖还原。

  • 数据卷可在容器之间共享或重用数据
  • 容器和宿主机之间数据共享
  • 卷中的更改可以直接实时生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

二、 为容器添加数据卷(重点)

2.1 添加数据卷与宿主机连接

础知识:

-v 是挂载硬盘

–privileged=true 的作用是允许目录挂载

执行命令: 

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

读写规则:

1、认就是rw

镜像名docker run -it--privileged=true-v/宿主机绝对路径目录:/容器内目录:rw  

2、容器实例内部被限制,只能读取不能写(限制容器的只读)

docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录:ro 镜像名

 如图::创建容器卷 :  -v /tmp/host_data:/tmp/docker_data ,并在容器卷:/tmp/docker_data目录内创建syf.text 文件

[root@syf ~]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED         SIZE
registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu   1.0       5166bfe283d8   29 hours ago    189MB
tomcat                                                     latest    fb5657adc892   23 months ago   680MB
redis                                                      latest    7614ae9453d1   23 months ago   113MB
ubuntu                                                     latest    ba6acccedd29   2 years ago     72.8MB

[root@syf ~]# docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=myubuntu20231201 ubuntu

root@1ac042f28ff6:/# cd tmp
root@1ac042f28ff6:/tmp# ls
docker_data
root@1ac042f28ff6:/tmp# cd docker_data/

root@1ac042f28ff6:/tmp/docker_data# touch syf.text
root@1ac042f28ff6:/tmp/docker_data# ls
syf.text

1、宿主机查看到syf.text文件,证明文件共享。

2、在容器中文件输入hello,在宿主机中也能看到内容,反之在宿主机中修改也一样,双方共享

[root@syf host_data]# pwd
/tmp/host_data
[root@syf host_data]# ls
syf.text

root@1ac042f28ff6:/tmp/docker_data# echo 'hello'>syf.text 
root@1ac042f28ff6:/tmp/docker_data# cat syf.text 
hello

2.2 查看数据卷

即使容器停止了,在宿主机操作数据卷,等到容器重新启动了也能实现数据共享

 docker inspect 容器id
[root@syf host_data]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
1ac042f28ff6   ubuntu    "bash"    15 minutes ago   Up 15 minutes             myubuntu20231201

[root@syf host_data]# docker inspect 1ac042f28ff6

如下图 :docker inspect 1ac042f28ff6命令执行,查看  Mounts 挂载属性

"Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/host_data",
                "Destination": "/tmp/docker_data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

三、容器之间的继承

重点:  要继承  上面 新建的这个容器卷 /tmp/host_data1:/tmp/docker_data1

docker run -it  --privileged=true --volumes-from 父类  --name=容器名 镜像名

 步骤1:新建一个容器卷

  •  创建新的容器数据卷,宿主机和docker容器的挂载目录如下:  /tmp/host_data1:/tmp/docker_data1
  • docker容器内新建 syf1.text,并写入hello two进入文本
[root@syf /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@syf /]# docker run -it --privileged=true -v /tmp/host_data1:/tmp/docker_data1 --name=myubuntu20231202 ubuntu

root@b422c2ec3b26:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@b422c2ec3b26:/tmp# cd /tmp/docker_data1/

root@b422c2ec3b26:/tmp/docker_data1# touch syf1.text

root@b422c2ec3b26:/tmp/docker_data1# echo 'hello two'>syf1.text 
root@b422c2ec3b26:/tmp/docker_data1# ls
syf1.text
root@b422c2ec3b26:/tmp/docker_data1# cat syf1.text 
hello two

 步骤二:继承上面 名称为  myubuntu20231202 的容器卷,可以看到容器卷目录也继承过来了


[root@syf ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                     PORTS     NAMES
b422c2ec3b26   ubuntu    "bash"    36 minutes ago   Exited (0) 6 minutes ago             myubuntu20231202


[root@syf ~]# docker run -it  --privileged=true --volumes-from myubuntu20231202  --name=myubuntu20231202Copy ubuntu
root@c79b57d0ff38:/# cd /tmp/docker_data1/
root@c79b57d0ff38:/tmp/docker_data1# ls 
syf1.text
root@c79b57d0ff38:/tmp/docker_data1# cat syf1.text 
hello two

相关推荐

  1. docker容器数据创建规则)-day03

    2023-12-06 17:38:05       58 阅读
  2. Docker容器数据

    2023-12-06 17:38:05       41 阅读
  3. Docker 容器数据

    2023-12-06 17:38:05       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 17:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 17:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 17:38:05       82 阅读
  4. Python语言-面向对象

    2023-12-06 17:38:05       91 阅读

热门阅读

  1. scp 指令详细介绍

    2023-12-06 17:38:05       54 阅读
  2. 全栈软件开发工程师需要具备哪些技能

    2023-12-06 17:38:05       52 阅读
  3. 2312skia,16画布

    2023-12-06 17:38:05       45 阅读
  4. 二、sql绕过过滤

    2023-12-06 17:38:05       60 阅读
  5. Spark_日期参数解析参数-spark.sql.legacy.timeParserPolicy

    2023-12-06 17:38:05       43 阅读
  6. linux中DNS服务器解析

    2023-12-06 17:38:05       51 阅读
  7. quickapp_快应用_系统接口应用

    2023-12-06 17:38:05       56 阅读
  8. Socket通信

    2023-12-06 17:38:05       65 阅读
  9. MySQL之函数学习

    2023-12-06 17:38:05       50 阅读
  10. File 类

    2023-12-06 17:38:05       55 阅读