Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备

一、前言

记录时间 [2024-4-11]

系列文章简摘:
Docker学习笔记(二):在Linux中部署Docker(Centos7下安装docker、环境配置,以及镜像简单使用)
Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结
Docker 学习笔记(五):梳理 Docker 镜像知识,附带 Commit 方式提交镜像副本,安装可视化面板 portainer

更多 Docker 相关文章请参考上面专栏哦,入门篇 1~5 已完结,接下来是精髓篇:容器数据卷、Dockerfile、Docker 网络。


学习工具包:

  • Docker 学习视频
  • Docker 官方文档
  • Docker 远程仓库
  • Linux 云服务器/虚拟机
  • FinalShell 远程连接工具

文章内容速览:

本文主要介绍容器数据卷技术,介绍数据卷的两种挂载方式,体验匿名挂载与具名挂载的区别之处,不仅实现了容器与宿主机的数据同步,还实现了多个容器之间的数据同步,具体有:

  • 数据卷的两种挂载方式:1. 使用 -v 命令来挂载;2. 使用 Dockerfile 构建。
  • 如何区分:具名挂载 / 匿名挂载 / 指定路径挂载?
  • 数据卷容器(父容器)介绍;
  • 容器数据卷实战:MySQL 的安装和数据同步。

关于数据卷技术的小结论:

  • 数据卷技术并不是简单的共享,而是拷贝。

  • 容器 – 容器:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

  • 容器 – 宿主机:一旦数据持久化到了本地,本地的数据是不会删除的。


二、容器数据卷技术介绍

在之前的 Docker 学习中,我们了解到:

  • Docker 将应用和环境打包成一个镜像
  • Docker 在容器中运行镜像
  • Docker 容器之间是互相隔离的

由此引发一个问题:如果容器被删除了,容器中的数据会随之一起丢失怎么办?

数据卷技术恰能解决此问题,实现数据持久化

通过将容器内的目录挂载到 Linux 上,实现 Docker 容器中产生的数据同步到本地;通过将容器挂载到父容器,实现容器之间的数据共享

以后修改容器内的配置文件在本地就可以完成,不需要特地进入容器了。


三、命令挂载 / Dockerfile 挂载

数据卷的两种挂载方式:1. 使用 -v 命令来挂载;2. 使用 Dockerfile 构建。

Dockerfile 方式使用较多,因为经常需要自己构建镜像;若构建镜像时没有挂载卷,则需要手动命令挂载

1. 使用命令挂载

操作步骤

docker run -it -v 主机目录:容器内目录

测试一下,将 centos 容器的 /home 目录挂载到宿主机的 /home/ceshi 目录

docker run -it -v /home/ceshi:/home centos /bin/bash

启动后通过 inspect 查看详细信息

docker inspect 容器id

查看结果,Mounts 下面就是 -v 命令挂载信息

"Mounts": [{"Type": "bind","Source": "/home/ceshi",	# Source 主机内地址"Destination": "/home",		# Destination docker 内容器地址"Mode": "","RW": true,"Propagation": "rprivate"}...
]

测试数据卷文件同步

  1. 容器同步到宿主机;2. 宿主机同步到容器

测试一:容器同步到宿主机

容器/home 文件夹下新建一个测试文件

touch test.java

然后查看宿主机的 /home/ceshi 文件夹

cd /home/ceshi

查看文件目录发现,宿主机的文件夹中同时拷贝了这个测试文件,结果如图所示:

在这里插入图片描述



测试二:宿主机同步到容器

停止该容器:

exit

在宿主机上修改这个文件内容,先打开文件,按住 i 键进入修改

# 先打开文件
vim test.java# 按住 i 键进入修改,写入内容
Hello, Linux updated!# 按下 ESC 键,保存文件并退出
:wq

查看之前运行过的容器,获取容器 id

docker ps -a

启动并进入容器:

# 启动容器
docker start 容器id# 进入容器
docker attach 容器id

查看文件内容,发现容器内的数据依旧是同步的。

cat /home/test.java

2. 使用 Dockerfile 构建

Dockerfile 是一个命令脚本,用于构建 Docker 镜像文件。

通过这个脚本可以生成镜像。镜像是一层一层的,脚本是一个一个的命令,所以每个命令都是一层。

在创建镜像之时,就完成了数据卷挂载。

创建 Dockerfile 文件

Dockerfile 文件名可以随意,但是,建议使用 Dockerfile

/home 目录下新建 docker-test-volume 文件夹,Dockerfile 在这个文件夹下构建镜像。

新建目录:

mkdir docker-test-volume

cd 进入目录,创建 dockerfile1 文件

vim dockerfile1

写入内容并保存退出

# 文件的内容 指令(大写)+ 参数
# 这里的每个命令,就是镜像的一层# 基于镜像 centos
FROM centos# 数据卷挂载目录,可以写多个
# 这里是匿名挂载
VOLUME ["volume01","volume02"]# 完成后 输出信息
CMD echo "--------end----------"# 进入容器控制台的方式
CMD /bin/bash

查看下文件内容,确定下有没有问题

cat dockerfile1

构建 Docker 镜像

基于 dockerfile1,在当前目录下,生成 1.0 版本的 yuanyuan/centos 镜像。

# 最后的 . 表示 当前目录
docker build -f dockerfile1 -t yuanyuan/centos:1.0 .

构建过程如下:

在这里插入图片描述

不难发现,它没有输出完整的构建过程信息,比如 VOLUME,比如 echo,难道是构建有问题?

笔者通过查看镜像,以及镜像元数据发现,数据卷挂载目录写入成功,镜像也完成了创建,构建没有问题


查看一下刚刚构建的镜像吧

[root@localhost docker-test-volume]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
yuanyuan/centos       1.0       b19d22d998db   2 years ago     231MB

详细构建过程查看

所以是它省略了步骤,那如果要看详细的构建过程,应该如何操作呢?当然是添加参数啦。

  • 方法一:DOCKER_BUILDKIT=0
  • 方法二:--progress=plain

拿上面的构建命令举例,大家可以自行尝试一下。

# 方法一
DOCKER_BUILDKIT=0 docker build -f dockerfile1 -t yuanyuan/centos:1.0 .# 方法二
docker build -f dockerfile1 -t yuanyuan/centos:1.0 --progress=plain .

启动容器并查看

启动容器,并进入到容器中:

docker run -it b19d22d998db /bin/bash

进入目录查看,如图,可以看到挂载的两个数据卷目录已经生成了。这两个数据卷目录在容器外部一定有同步的目录。

在这里插入图片描述


查看宿主机同步情况

查找同步目录

在容器内,进入 volume01 目录,并创建测试文件:

[root@e773f0b76b59 /]# cd volume01
[root@e773f0b76b59 volume01]# touch container.txt

然后 exit 退出容器,查看该容器的信息:

docker inspect 容器id

在 Mounts 中找到如下信息:

  • Source 为外部宿主机的同步目录
  • Destination 为容器中的同步目录
"Mounts": [{"Type": "volume","Name": "20bef5da955e65c8ea65ded49b3baf14e5c92b5a02856c4c91a4cb6a98972556","Source": "/var/lib/docker/volumes/20bef5da955e65c8ea65ded49b3baf14e5c92b5a02856c4c91a4cb6a98972556/_data",// Source 中即为外部宿主机的同步目录"Destination": "volume01","Driver": "local","Mode": "","RW": true,"Propagation": ""},// ......volume02 省略],

在容器外部(宿主机)查看同步情况

进入 volume01 的 Source 目录,查看情况:同步成功了

[root@localhost docker-test-volume]# cd /var/lib/docker/volumes/20bef5da955e65c8ea65ded49b3baf14e5c92b5a02856c4c91a4cb6a98972556/_data
[root@localhost _data]# ls
container.txt

四、匿名挂载 / 具名挂载

1. 匿名挂载

匿名挂载的配置方式为:-v 容器内路径

运行一个 nginx 试试:

# -P 表示随机映射端口
docker run -d -P --name nginx01 -v /etc/nginx nginx

学习下 volume 如何使用:

docker volume --help

volume 使用方式如下:

[root@localhost ~]# docker volume --help
Usage:  docker volume COMMAND
Manage volumes
Commands:create      Create a volumeinspect     Display detailed information on one or more volumesls          List volumesprune       Remove unused local volumesrm          Remove one or more volumes
Run 'docker volume COMMAND --help' for more information on a command.

查看本地所有 volume 的情况:

docker volume ls

查看发现,匿名挂载是很长一串。

因为 -v 只写了容器内的路径,没有写容器外的路径

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     70addcda47d2d792fce62f674394a8a3df02042fbf5a8e05ed8462e8065d89d2

2. 具名挂载

通过具名挂载可以方便地找到卷,大多数情况使用具名挂载

具名挂载的配置方式为:-v 卷名:容器内路径

运行一个 nginx 试试:

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

查看本地 volume 的情况,可以看到具名挂载卷的名字是刚刚设置的 juming-nginx

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     juming-nginx

查看一下这个卷:

docker volume inspect juming-nginx

结果如下,可以发现,Docker 容器内的卷在没有指定路径情况下,默认会在 /var/lib/docker/volumes/xxx/_data

[root@localhost ~]# docker volume inspect juming-nginx
[{"CreatedAt": "2024-04-10T20:54:37+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data","Name": "juming-nginx","Options": null,"Scope": "local"}
]

进入目录查看一下,我们成功拿到了 nginx 的配置文件 nginx.conf

[root@localhost _data]# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params

3. 如何区分

如何区分:具名挂载 / 匿名挂载 / 指定路径挂载?

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

4. 拓展:读写权限

改变读写权限

# 通过 -v 容器内路径:ro rw 改变读写权限
ro		read-only		# 只读
rw		read-write		# 可读可写# 举个例子
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

一旦设置了容器权限,容器对挂载出来的内容就会有限定。

/etc/nginx:ro 表示容器内的 /etc/nginx 会被挂载为只读模式,意味着不能在容器内部对这个目录进行写操作


五、数据卷容器(父容器)

1. 原理介绍

数据卷技术不仅可以完成容器和宿主机之间的同步,也可以完成两个/多个容器之间的同步。

使用方式,将一个容器挂载到另一个容器上,被挂载的容器,我们称之为父容器,或数据卷容器

在这里插入图片描述


2. 启动容器测试

通过上面 Dockerfile 制作的 yuanyuan 镜像,我们启动 3 个容器,来测试多个容器之间数据同步。

启动并进入容器 docker01

docker run -it --name docker01 yuanyuan/centos:1.0

查看详细目录,可以看到数据卷目录:

[root@b3824bd95c81 /]# ls -l
total 56
drwxr-xr-x   2 root root 4096 Apr 11 05:49 volume01
drwxr-xr-x   2 root root 4096 Apr 11 05:49 volume02

启动并进入容器 docker02

为了方便测试,我们可以使用 FinalShell 创建多个 SSH 连接,3 个都连接我们的 Linux,第 1 个进入 docker01 容器,第 2 个进入 docker02 容器。

我们把 docker01 作为数据卷容器docker02 挂载到 docker01 上

# 挂载参数 --volumes-from
docker run -it --name docker02 --volumes-from docker01 yuanyuan/centos:1.0

查看详细目录,可以看到数据卷目录:

[root@6ff9c85ebd26 /]# ls -l
total 56
drwxr-xr-x   2 root root 4096 Apr 11 05:49 volume01
drwxr-xr-x   2 root root 4096 Apr 11 05:49 volume02

启动并进入容器 docker03

docker03 也挂载到 docker01 上

# 挂载参数 --volumes-from
docker run -it --name docker03 --volumes-from docker01 yuanyuan/centos:1.0

查看详细目录,可以看到数据卷目录:

[root@2f1eead0d71f /]# ls -l
total 56
drwxr-xr-x   2 root root 4096 Apr 11 06:08 volume01
drwxr-xr-x   2 root root 4096 Apr 11 05:49 volume02

3. 测试容器间的数据同步

通过 --volumes-from,可实现容器间的数据同步。

数据同步是双向的。

测试 docker01 ==> docker02

在 docker01 容器的 volume01 卷中创建文件

[root@b3824bd95c81 /]# cd volume01
[root@b3824bd95c81 volume01]# touch docker01

在 docker02 容器的 volume01 卷中查看

可以看到,docker01 中创建的内容同步到了 docker02 上。

[root@6ff9c85ebd26 /]# cd volume01
[root@6ff9c85ebd26 volume01]# ls
docker01

测试 docker02 ==> docker01

在 docker02 容器的卷中创建文件

[root@6ff9c85ebd26 volume01]# touch docker02

在 docker01 容器的卷中查看

可以看到,docker02 中创建的内容同步到了 docker01 上。

[root@b3824bd95c81 volume01]# ls
docker01  docker02

测试 docker03 ==> docker01 / 02

在 docker03 容器的卷 volume01 中创建文件

touch docker03

分别在 docker01 和 docker02 容器的 volume01 卷中查看

可以看到,docker03 中创建的内容同步到了 docker01 和 docker02 容器上。


4. 删除父容器

删除 docker01 容器:

[root@localhost ~]# docker rm -f docker01

在 docker02 / docker03 容器中查看数据卷,发现文件依然存在,它们依然可以访问这个数据卷。

[root@6ff9c85ebd26 volume01]# ls
docker01  docker02  docker03


这说明:数据卷技术并不是简单的共享,而是拷贝。

docker02 和 docker03 是把 docker01 中的数据卷拷贝了一份到自己那里。

注意:就算此时父容器 docker01 被删除了,docker02 和 docker03 依然能够实现数据同步!


容器 – 容器:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

容器 – 宿主机:一旦数据持久化到了本地,本地的数据是不会删除的。


六、MySQL 实战

实战:MySQL 的安装和数据同步;思考:MySQL 的数据持久化问题。

1. 安装 MySQL

获取镜像

获取镜像,下载 MySQL:

docker pull mysql:5.7

运行容器

docker hub 上查看如何使用 mysql:参考这里

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

运行容器,需要做数据挂载,注意安装启动 mysql 需要配置密码

  • -d:后台运行
  • -p:端口映射
  • -v:卷挂载
  • -e:环境配置
  • --name:容器名字

注意:命令中的斜杠 \ 是在一条命令没写完但是要进行换行情况下使用,如果命令写在同一行就不需要斜杠

docker run -d -p 3346:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

测试连接

测试一下自己电脑上能不能连接成功

使用数据库工具,比如 Navicat、WorkBench 之类的测试一下

输入宿主机的 ip,还有映射的端口号 3346,以及用户名和密码

在本地创建一个数据库 test

在这里插入图片描述


Linux 中查看容器挂载目录 /home/mysql/data,发现数据库 test 完成了同步

说明映射路径是正确的

在这里插入图片描述


删除容器

删除 mysql01 容器

docker rm -f mysql01

然后查看 /home/mysql/data 目录,发现挂载的数据卷依然存在,不会和容器一起删除

实现了数据持久化功能!


2. 多个 MySQL 实现数据同步

启动两个 mysql 容器,让他们实现数据同步

先启动容器 mysql01,配置一下容器内数据卷路径

docker run -d -p 3346:3306 -v /etc/mysql/conf.d -v /var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

再启动 mysql02,把 mysql02 挂载到 mysql01 上

docker run -d -p 3346:3306 \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7

注意:

端口设置一样的话,相当于两个容器共用一个数据库。无论是在本地连接还是各自容器内查看,它们的内容都保持一致

但不能同时启动,因为端口同一时刻只能分配给一个容器。


七、总结

本文主要介绍了容器数据卷技术,介绍了数据卷的两种挂载方式,体验了匿名挂载与具名挂载的区别之处,不仅实现了容器与宿主机的数据同步,还实现了多个容器之间的数据同步。初学入门,挑战容器数据卷技术一文通。


一些参考资料

狂神说系列 Docker 教程:https://www.bilibili.com/video/BV1og4y1q7M4/

Docker 官方文档:https://docs.docker.com/engine/install/centos/

Docker 远程仓库:https://hub.docker.com/

FinalShell 下载:http://www.hostbuf.com/t/988.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm同学录网站论文

摘要 本文介绍了同学录网站的开发全过程。通过分析企业对于同学录网站的需求,创建了一个计算机管理同学录网站的方案。文章介绍了同学录网站的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。 本同学录网站…

造船业的重要工具之一(火工平台)——河北北重厂家

火工平台是造船业的重要工具之一,它是用于火焰切割和焊接的设备。在造船过程中,需要对金属材料进行切割和焊接,以构建船体结构。火工平台可以提供高温火焰,使得金属材料可以被切割或焊接。 火工平台通常由两个主要部分组成&#…

vue2响应式原理----发布订阅模式

很多人感觉vue2的响应式其实用到了观察者发布订阅。我们先来看一下简单的发布订阅的代码: // 调度中心 class Dep {static subscribes {}// 订阅所有需求static subscribe (key, demand) {// 对需求分类收集if (!Dep.subscribes[key]) Dep.subscribes[key] []Dep…

Windows安装MongoDB结合内网穿透轻松实现公网访问本地数据库

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 用户登录界面 管理员主界面 员工基本档…

武汉星起航顺应政策东风,打造跨境电商孵化新标杆

在国家政策的鼎力支持下,跨境电商行业迎来了蓬勃发展的黄金时期。武汉星起航电子商务有限公司作为行业的佼佼者,积极响应国家政策号召,凭借专业的运营团队和丰富的经验,成功打造了一站式的跨境电商亚马逊孵化平台,为合…

element-ui form表单自定义label的样式、内容

element-ui form表单自定义label的样式、内容 效果截图 代码 <el-form size"small" :inline"true" label-width"120px"><el-form-item prop"name"><div slot"label"><i style"color: red;"…

JavaWeb--JavaScript-事件绑定/BOM/DOM编程

目录 1. 事件绑定 1.1. 什么是事件 1.2. 常见事件 1.3. 事件的绑定 1.3.1. 属性绑定 1.3.2. DOM编程绑定 1.4. 事件的触发 1.4.1. 行为触发 1.4.2. DOM编程触发 2. BOM 编程 2.1. 什么是 BOM 2.2. window对象的常见属性(了解) 2.3. window对象的常见方法(了解) 2…

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 + 混合注意力机制 + 提及-邻居上下文建模

【中文医疗词嵌入模型】SMedBERT&#xff1a;结构化知识图谱 混合注意力机制 提及-邻居上下文建模 提出背景SMedBERT 具体到点的设计逻辑SMedBERT的背景SMedBERT的工作原理 SMedBERT 具体实现细节3.1 符号和模型3.2 Top-K Entity Sorting3.3 提及-邻居混合注意力3.4 提及-邻居…

Android - 安卓概述

什么是安卓? Android 是一种基于 Linux 的开源操作系统&#xff0c;适用于智能手机和平板电脑等移动设备。 Android 是由 Google 和其他公司领导的 Open Handset Alliance 开发的。 Android 为移动设备的应用程序开发提供了统一的方法&#xff0c;这意味着开发人员只需为 And…

【JavaWeb】Day42.MySQL概述——多表查询

介绍 多表查询&#xff1a;查询时从多张表中获取所需数据 单表查询的SQL语句&#xff1a;select 字段列表 from 表名; 如果要执行多表查询&#xff0c;只需要使用逗号分隔多张表即可&#xff0c;如&#xff1a; select 字段列表 from 表1, 表2; 例如&#xff1a;查询…

C++11的更新介绍(新的类功能、可变参数模板)

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 总有光环在陨落&#xff0c;总有新星在闪烁 新的类功能 默认成员函数&…

《师兄啊师兄》:玄机科技打造国漫新高峰,IP运营再显神力

在这个国漫蓬勃发展的时代&#xff0c;玄机科技再次以其超凡的制作水准和出色的IP运营能力&#xff0c;为我们带来了一部国漫新经典——《师兄啊师兄》。这部作品不仅在画面、剧情上达到了行业新高度&#xff0c;更在IP运营上展现出了其强大的实力与前瞻性。 《师兄啊师兄》的画…

构建智能连接的未来:物联网平台系统架构解析

随着科技的不断进步和互联网的普及&#xff0c;物联网&#xff08;Internet of Things, IoT&#xff09;已成为连接世界的新方式。物联网平台作为实现物联网应用的核心基础设施&#xff0c;其系统架构的设计和实施至关重要。本文将深入探讨物联网平台系统架构的关键要素和最佳实…

【七 (2)FineBI-平台新增用户留存分析】

目录 文章导航一、字段解释1、用户平台登录信息表格2、用户平台激活信息表格 二、需求三、操作步骤1、建立用户平台登录信息表格和用户平台激活信息表格的关联关系2、将用户平台激活信息表格的激活日期添加到用户平台登录信息表格3、新增公式列&#xff0c;计算激活时间和登录时…

P4119 [Ynoi2018] 未来日记

它来了&#xff01; 分析一下第一个操作&#xff0c;不是写过嘛&#xff0c;并查集 分析一下第二个操作&#xff0c;二分套二分答案 拿下了这题 仔细分析&#xff0c;貌似时间复杂度是错的 我们考虑块套块 时间复杂度 对1e5的值域进行分块 求k值我们可以先找是第几个块&…

word并排比较

Word并排比较是一种在Microsoft Word文档中同时显示两个文本内容并进行比较的功能。这种比较通常用于查看文档的不同版本之间的差异&#xff0c;或者比较两个不同来源的文本内容。 在Word中进行并排比较通常可以通过以下步骤实现&#xff1a; 通过这种方式&#xff0c;Word的并…

2024阿里云学生服务器申请图文全流程,学生机免费续费攻略

2024年阿里云学生服务器免费申请&#xff0c;完成学生认证可以领取1个月免费学生机&#xff0c;完成任务可以再免费学费6个月时长&#xff0c;还可以领取高校计划学生300元无门槛优惠代金券&#xff0c;阿里云服务器网aliyunfuwuqi.com整理2024年最新阿里云大学生服务器申请入口…

8路HDMI+8路AV高清视频流媒体编码器JR-3218HD

产品简介&#xff1a; JR-3218HD高清音视频编码产品支持8路高清HDMI音视频采集功能&#xff0c;8路AV视频采集功能&#xff0c;8路3.5MM独独立音频接口采集功能。编码输出双码流H.264格式&#xff0c;音频MP3/AAC格式。编码码率可调&#xff0c;画面质量可控制。支持HTTP/RTSP…

引人共鸣的情感视频素材在哪找?今天看这五个网站

朋友们好啊&#xff0c;最近是不是不少人都在发愁啊&#xff0c;优秀创作者做视频用的视频素材哪来的啊&#xff1f;今天我为朋友们准备了几个优秀的视频素材网站&#xff0c;让你们做视频不再缺少素材&#xff0c;然后还有几个辅助创作的工具&#xff0c;都是你们需要的&#…