本文介绍: 如图::创建容器卷 : –v /tmp/host_data:/tmp/docker_data ,并在容器卷:/tmp/docker_data目录内创建syf.text 文件。步骤二:继承上面 名称为 myubuntu20231202 的容器卷,可以看到容器卷目录也继承过来了。上面 新建的这个容器卷 /tmp/host_data1:/tmp/docker_data1。2、在容器中文件输入hello,在宿主机中也能看到内容,反之在宿主机中修改也一样,双方共享。步骤1:新建一个容器卷。,在宿主机操作数据卷,
一、容器数据卷概念
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:数据卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
类似于Redis中的rdb和aof文件,redis挂了也可以覆盖还原。
二、 为容器添加数据卷(重点)
2.1 添加数据卷与宿主机连接
础知识:
执行命令:
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
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"
}
]
三、容器之间的继承
docker run -it --privileged=true --volumes-from 父类 --name=容器名 镜像名
- 创建新的容器数据卷,宿主机和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
原文地址:https://blog.csdn.net/javaxueba/article/details/134736096
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_31248.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。