在docker中使用主机串口通讯

在进行软件docker化的过程时,很大的一个阻碍就是软件与各种外围硬件设备的交互,网口通信的设备能够很容易地接入容器,但是串口设备则要复杂一些。本文讨论在windows和linux下docker容器使用串口的方法。

由于wsl2也在一直更新,不排除未来有可能直接支持wsl的情况

docker run中提供了使用的本地设备资源的指令–device,但是依然有些限制,根据宿主与容器的情况,可以简单分为以下几种:

直接支持,在linux系统中,串口使用–device=/dev/ttyS1:/dev/ttyS2参数运行,即可直接在容器中访问串口1。

没用过这个套路,太诡异了,本文不讨论这种情况。

PS C:\> docker run --device=class/86E0D1E0-8089-11D0-9CE4-08003E301F73 mcr.microsoft.com/windows/servercore:ltsc2019

这里需要细分两种情况,分别对应WSL1与WSL2,其中WSL1可以直接访问本机的资源,文件也是可以直接访问的。

我机器上没有WSL1,也没有去尝试在WSL1基础上运行docker desktop并验证是否真实可用,有兴趣的读者请自行尝试。

Workaround

似乎在官方推出正式解决方案之前,这个方式无解了,但是我们可以将串口转成网口进行通信,从而实现docker变相访问串口。例如,对于硬件设备,可以通过RS232/485转以太网模块实现将串口通信,典型的模块有”有人串口服务器”系列的转换器。当然,也可以写一个小程序用来将串口接收到的数据转发到docker容器的端口。(如果host地址不同,那么使用类似socat命令可以实现转发)

注意,对于使用RTS之类的串口功能的通信,使用socket进行模拟可能不能模拟对应的访问控制。

Original: https://www.cnblogs.com/podolski/p/16668304.html
Author: 波多尔斯基
Title: 在docker中使用主机串口通讯

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578044/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【开源打印组件】vue-plugin-hiprint初体验

    vue-plugin-hiprint的学习与应用 😄 生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学…

    Linux 2023年6月6日
    0173
  • STP 指定端口 根端口 区别和理解

    不多说,先上图,A为指定端口,B为非指定端口。 看本文的网友应该知道根端口和指定端口的选举,但是对指定端口和根端口的理解不清楚。这里我就略过选举过程,直接描述这两者的区别和存在的意…

    Linux 2023年6月6日
    0141
  • 最小二乘法

    背景:我们有一系列的点(x,y),如下图所示,实际上这就是一个y=10*x的一元一次曲线,再加上一个随机误差得到的数据。 我们想用一个线性方程来拟合它y=a*x+b为了达到最好的拟…

    Linux 2023年6月15日
    0122
  • 【数学建模相关】matplotlib画多个子图(散点图为例 左右对照画图)

    @ 例题 例图 代码展示 例题 乙醇偶合制备 C4 烯烃 C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料。 在制备过程中,催化剂组合(即:Co 负载量、…

    Linux 2023年6月8日
    098
  • sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)

    基本查询: 实例表 1 示例表 2 –部门表 3 4 create table dept( 5 6 deptno int primary key,–部门编号 7 8 dname…

    Linux 2023年6月7日
    0101
  • 操作系统实现-进入内核

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们正式进入内核,编写相关的内核代码,也就是kernel代码 数据类…

    Linux 2023年6月13日
    0102
  • 002 Linux 文件与目录命令的必会姿势!

    文件及目录的路径切换、显示、创建、复制、移动和删除操作的常用姿势,必会!因为这些命令是使用 Linux 系统进行工作的基础,是摆脱小白的第一步,是构建大厦的基石!发现锅锅真是个话痨…

    Linux 2023年5月27日
    088
  • AI芯片的软件挑战

    本文是记录会议【ICPA联盟微课 | 第1期】燧原科技李彬:AI芯片的软件挑战内容。不得不说,什么叫高屋建瓴。 芯片软件的5个衡量指标:算力利用率、开发效率、生态兼容性、可移植性、…

    Linux 2023年6月7日
    091
  • 手撕spring核心源码,彻底搞懂spring流程

    引子 十几年前,刚工作不久的程序员还能过着很轻松的日子。记得那时候公司里有些开发和测试的女孩子,经常有问题解决不了的,不管什么领域的问题找到我,我都能帮她们解决。但是那时候我没有主…

    Linux 2023年6月14日
    0121
  • docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况。…

    Linux 2023年6月13日
    099
  • 重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用

    欢迎关注公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文 大家好,我是bin,又到了每周我们见面的时刻了,我的公众号在1月10号那天发布了第一篇文章《从内…

    Linux 2023年6月6日
    0147
  • Shell alias命令详解:给命令设置别名

    给命令设置别名,你可以把它当作命令的”小名”,但是这样做有什么意义呢? 比如笔者刚接触 Linux 时,使用的编辑器是 Vi,但是现在 Vim 的功能明显比…

    Linux 2023年5月28日
    065
  • Linux笔记 bash解决if not found 问题

    Linux笔记 bash解决if not found 问题 原因是if [无空格然后在内容然后再空格] 我想应该新手小白都会犯这样问题 正确写法 if [ $# -ne 1 ] 错…

    Linux 2023年6月8日
    0115
  • mycat数据库集群系列之数据库多实例安装

    mycat 数据库集群系列之数据库多实例安装 最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大…

    Linux 2023年6月14日
    097
  • 随笔记录

    html结构、css表现、js行为vscode和sublime一样的在vscode中的插件:a.Auto Rename Tag 整体改变标签b.view-in-browser 预览…

    Linux 2023年6月13日
    092
  • fabric2.2.网络部署

    在执行测试项目时,多次使用并修改此文件,部分地方没有及时更新.如果问题请联系 487008159 更正. 项目: fabric-samples 工作目录 : ~/go/src/gi…

    Linux 2023年6月13日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球