Docker数据管理(数据卷与数据卷容器)

目录

[一、数据卷(Data Volumes)](#一、数据卷(Data Volumes))

1、概述

2、原理

3、作用

[4、示例:宿主机目录 /var/test 挂载同步到容器中的 /data1](#4、示例:宿主机目录 /var/test 挂载同步到容器中的 /data1)

[二、数据卷容器(DataVolumes Containers)](#二、数据卷容器(DataVolumes Containers))

1、概述

2、作用

3、示例:创建并使用数据卷容器

三、容器互联:--link


管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)数据卷容器(DataVolumes Containers)

在生成容器的同时,加上 -v 选项,指定把当前服务器的目录映射到容器中,实现docker持久化!

一、数据卷(Data Volumes)

1、概述

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作。

2、原理

将容器内部的配置文件目录,挂载到宿主机指定目录下

数据卷默认会一直存在,即使容器被删除。

宿主机和容器是两个不同的名称空间,如果想进行连接需要用ssh,exec和attch也类似于ssh这种方式登录。

在企业中ssh这种登陆方式会比较危险,安全漏洞很大,尽量减少ssh这种,杜绝了频繁使用exec。

因此使用数据卷的方式把容器内部的文件目录挂载到宿主机指定目录下进行修改,当容器里的文件频繁需要修改时不需要登陆进去,直接使用数据卷方式在宿主机指定的目录下进行修改即可,方便又安全。

3、作用

Docker容器删除后,在容器中产生的数据也会随之销毁,所以使用数据卷避免这种情况。由Docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System(联合文件系统),提供一些用于持续存储或共享数据的特性。

4、示例:宿主机目录 /var/test 挂载同步到容器中的 /data1

注意:宿主机本地目录的路径必须是使用绝对路径。如果路径不存在,Docker会自动创建相应的路径。

把宿主机挂载到容器内部

复制代码
docker run -it --name num01 -v /var/test:/data1 centos:7 bash

另开一个终端在宿主机进行查看

复制代码
cd /var/test && ls

在容器中创建文件num01.txt

复制代码
echo "this is num01 file" > /data1/num01.txt

在宿主机查看是否有内容

复制代码
cat /var/test/num01.txt

二、数据卷容器(DataVolumes Containers)

1、概述

数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

2、作用

让两个容器实现数据共享。

如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。

3、示例:创建并使用数据卷容器

创建一个容器 rong01 作为数据卷容器并创建文件 1.txt 与 2.txt

复制代码
#创建并进入容器
docker run -it --name rong1 -v /data1 -v /data2 centos:7 bash	

#容器内创建测试文件1、2
echo "this is 1 file" > /data1/1.txt		  	
echo "THIS IS 2 FILE" > /data2/2.txt					

使用 --volumes-from 挂载容器 rong02 中的数据卷到新的容器

复制代码
#创建并进入容器
docker run -it --name rong2 --volumes-from rong1 centos:7 bash	

#查看测试数据是否同步
cat data1/1.txt											
cat data2/2.txt

三、容器互联:--link

使用centos镜像,容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。

简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。

示例:

复制代码
1、创建并运行源容器取名web1
docker run -itd -P --name web1 centos:7 /bin/bash

2、创建并运行接收容器取名web2
#使用--link选项指定连接容器以实现容器互联
docker run -itd -P --name web2 --link web1:web2 centos:7 /bin/bash

3、进入web2容器验证
docker exec -it web2 bash
ping web1

也可以直接取消后台-d 直接进入web2容器ping web1
相关推荐
liebe1*121 分钟前
第九章 防火墙入侵防御
运维·网络·防火墙
Radan小哥32 分钟前
Docker学习笔记—day012
笔记·学习·docker
橘子真甜~1 小时前
C/C++ Linux网络编程13 - 传输层TCP协议详解(面向字节流和有连接)
linux·运维·服务器·c语言·网络·c++·tcp/ip
qq_5470261791 小时前
Docker 搭建Nexus3私服
运维·docker·容器
June`1 小时前
SSH连接原理与守护进程实战
linux·运维·服务器
古城小栈1 小时前
K3s + 边缘 AI:轻量级 K8s 在嵌入式设备的部署
人工智能·容器·kubernetes
小道士写程序2 小时前
Kubernetes 1.23.17 集群部署完全记录(单点)
云原生·容器·kubernetes
driver19992 小时前
hyperV装的windows11安装docker不支持虚拟化
运维·docker·容器
_OP_CHEN2 小时前
【Git原理与使用】(五)Git 多人协作:从分支协作到冲突解决,团队开发效率翻倍秘籍
linux·运维·git·团队开发·运维开发·企业级组件·git多人协作
warrah2 小时前
docker portainer的应用
docker