Docker入门

1. 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布 出去,其他使用者可以直接使用这个镜像。 运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。

在这里插入图片描述

2. Docker 核心概念

  • docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上)
  • docker客户端(Client):连接docker主机进行操作
  • docker仓库(Registry):用来保存各种打包好的软件镜像
  • docker镜像(Images):软件打包好的镜像,放在docker仓库中
  • docker容器(Container):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用

在这里插入图片描述

3. docker安装

  1. 确认要安装docker的系统的linux内核高于3.10,CentOS7以下,linux内核都是2.x,所以,如果要使用yum update指令升级的话,一定要编译,否则会开不了机,而且,百度各种解决方案都没用(不要问我为什么知道),升级内核,也很慢,要下载1000+个文件。所以,建议,直接装一个CentOS7。

    uname -r  查看内核版本
    
  2. 安装docker

    yum install docker
    
  3. 查看docker版本

    docker -v
    
  4. 查看docker的状态

    service docker status
    
  5. 启动docker

    service docker start
    

如果想让linux系统开机就启动docker的话,可以用systemctl enable docker

  1. 停止docker

    service docker stop
    

4. docker 常用命令

4.1 镜像操作

操作命令说明
检索docker search 关键字 eg:docker search redis我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取docker pull 镜像名:tagtag是可选的,tag表示标签,多为软件的版本,默认是latest
列表docker images查看所有本地镜像
删除docker rmi image-id删除指定的本地镜像

4.2 修改镜像源

修改 /etc/docker/daemon.json ,写入如下内容(如果文件不存在请新建该文件)

vim /etc/docker/daemon.json

# 内容:

{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
国内镜像源地址
Docker 官方中国区https://registry.docker-cn.com
网易http://hub-mirror.c.163.com
中国科技大学https://docker.mirrors.ustc.edu.cn
阿里云https://pee6w651.mirror.aliyuncs.com

4.3 容器操作

以tomcat 为例

  1. 下载tomcat镜像
docker pull tomcat

如需选择具体版本,可以在docker 官网搜索tomcat

docker pull tomcat:7.0.96-jdk8-adoptopenjdk-hotspot

  1. 根据镜像启动容器,不加TAG默认latest,如果没有下载latest会先去下载再启动
docker run --name mytomcat -d tomcat:latest

--name :给容器起个名字

-d:后台启动,不加就是前端启动,然后你就只能开一个新的窗口连接,不然就望着黑乎乎的窗口,啥也干不了,Ctrl+C即可退出,当然,容器也会关闭

  1. 查看运行中的容器
docker ps
  1. 停止运行中的容器
docker stop  容器的id

# 或者

docker stop  容器的名称,就是--name给起的哪个名字
  1. 查看所有的容器
docker ps -a
  1. 启动容器
docker start 容器id/名字
  1. 删除一个容器
docker rm 容器id/名字
  1. 启动一个做了端口映射的tomcat
 docker run -d -p 8888:8080 tomcat

-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口(8888):容器内部的端口(8080)

外界通过主机的8888端口就可以访问到tomcat,前提是8888端口开放

  1. 关闭防火墙
# 查看防火墙状态
service firewalld status

# 关闭防火墙
service firewalld stop
  1. 查看容器的日志
docker logs 容器id/名字
  1. 拉取的容器不像下载的一样,放在指定的文件夹下了,如果想要访问容器目录,需要启动容器,使用docker ps获取容器id,使用下面的命令进入容器目录
docker exec -it 432bd371973f /bin/bash

5. 下载mySql

# 拉取镜像
docker pull mysql:5.7.28

# 运行mysql容器
 docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28

--name mysql :容器的名字是mysql;

MYSQL_ROOT_PASSWORD=root :root用户的密码是root (必须指定,否则会报错)

连接容器内mysql

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
docker exec -it mysql bash

-i : 交互式操作。

-t: 终端。

mysql: 名为mysql的 镜像。

bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash,也可以用/bin/bash

连接上以后就可以正常使用mysql命令操作了

mysql -uroot -proot

直接使用端口映射更加方便

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28

注意

Docker容器同时只能管理一个进程,如果这个进程退出,那么容器也就退出了,但这不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须有一个前台执行的进程, 如果没有前台进程执行,容器认为空闲,就会自行退出。比如已经启动了redis,如果再使用docker run -d -p 3306:3306 mysql:5.6命令启动的话,一启动就会退出。可以使用docker run -dit -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.6 /bin/bash命令

<think>嗯,用户问HMI是什么,我需要先回忆一下相关知识。HMI全称是人机界面,也就是Human-Machine Interface。之前用户是车载DMS和AVM开发的项目经理,可能是在汽车行业,所以需要结合车载系统来解释HMI。 首先,得明确HMI的基本定义,然后说明它在汽车中的应用,比如中控屏幕、仪表盘这些。用户可能作为项目经理,更关注HMI的功能、重要性以及设计考虑因素,而不仅仅是技术细节。 然后,要区分HMI和GUI的不同,HMI更侧重硬件交互,而GUI是图形界面。车载HMI可能涉及触摸屏、语音控制、物理按钮等多种交互方式,需要举例说明。 还要考虑到用户之前的问题涉及QNX和安卓开发,可能需要提到HMI在不同操作系统上的实现,比如QNX用于实时性高的部分,安卓用于上层应用。HMI开发可能涉及跨系统协作,比如仪表盘用QNX,娱乐系统用安卓,但需要整合在一起。 另外,用户作为项目经理,可能关心HMI设计中的用户体验、安全性、响应速度等。需要提到设计原则,比如易用性、信息清晰、减少驾驶员分心,符合车规标准,比如ISO 26262。 可能还需要补充HMI的发展趋势,比如智能化、语音交互、AR-HUD等新技术,帮助用户了解行业动态。同时,确保解释简洁明了,避免技术术语过多,但保持专业性。 最后,检查是否有遗漏点,比如HMI与车载系统的连接,如何处理多任务交互,测试和验证流程等。确保回答结构清晰,分点说明,让用户作为项目经理能快速抓住重点。</think>HMI(**人机界面**,Human-Machine Interface)是人与机器或系统之间进行信息交互的接口,通过视觉、触觉、语音等方式实现双向通信。在车载领域,HMI是驾驶员与车辆功能交互的核心载体,直接影响用户体验和行车安全。 --- ### **一、HMI的核心组成** #### 1. **硬件层面** - **显示设备**:仪表盘、中控屏、HUD(抬头显示)、电子后视镜等。 - **输入设备**:触控屏、物理按键、旋钮、语音麦克风、手势传感器等。 - **反馈设备**:震动马达、声学提示(如报警音)、LED指示灯等。 #### 2. **软件层面** - **图形界面(GUI)**:图标、菜单、动画等视觉元素设计。 - **交互逻辑**:触控响应、语音指令处理、多任务切换等。 - **数据通信**:与车辆CAN/LIN总线、ECU、ADAS系统的数据交互。 --- ### **二、车载HMI的核心功能** | **功能模块** | **典型应用场景** | **技术要求** | |--------------------|-----------------------------------------|----------------------------------| | 驾驶信息显示 | 车速、续航里程、导航指示 | 低延迟(<100ms),高刷新率(≥60Hz) | | 车辆控制 | 空调调节、驾驶模式切换 | 物理/触控双冗余设计 | | ADAS交互 | 车道偏离预警、盲区监测提示 | 告警优先级分级(ISO 15008标准) | | 娱乐与互联 | 音乐播放、手机投屏、OTA升级 | 多线程资源管理(CPU占用率<30%) | --- ### **三、车载HMI的设计原则** #### 1. **安全性优先** - **注意力分散控制**:单次操作步骤≤3步,眼离路时间<2秒(NHTSA建议)。 - **告警标准化**:颜色(红色仅用于紧急告警)、音调频率符合ISO 7731标准。 #### 2. **多模态交互** - **触控+语音+手势融合**:例如: ```java // Android Automotive中语音指令监听示例 CarVoiceInteractionSession.registerVoiceCallback(callback); ``` - **自适应界面**:根据驾驶场景(如夜间/雨天)自动调整亮度与对比度。 #### 3. **跨系统协同** - **QNX-Android协作**: - QNX负责实时性任务(如仪表盘刷新)。 - Android处理娱乐系统复杂UI。 - 通过Hypervisor共享GPU资源(如Vulkan API跨进程渲染)。 --- ### **四、HMI开发中的技术挑战** #### 1. **性能优化** - **渲染效率**:车载芯片(如高通SA8155)的GPU需支持OpenGL ES 3.2/Vulkan。 - **冷启动时间**:系统上电到HMI就绪需<3秒(AUTOSAR标准)。 #### 2. **合规性要求** - **功能安全**:ASIL-B级(仪表显示)至ASIL-D级(刹车状态提示)。 - **电磁兼容**:显示屏辐射需满足CISPR 25 Class 5标准。 #### 3. **测试验证** - **自动化测试工具**: - **SIL(软件在环)**:Matlab/Simulink验证控制逻辑。 - **HIL(硬件在环)**:dSPACE平台模拟车辆总线信号。 - **用户体验测试**:眼动仪追踪驾驶员注意力分布。 --- ### **五、HMI发展趋势** 1. **智能化**:AI引擎实现个性化界面(如根据驾驶员习惯调整菜单排序)。 2. **AR-HUD增强现实**:将导航路径直接投射到前挡风玻璃(视场角>10°)。 3. **多屏联动**:中控屏、副驾屏、后排屏内容协同(如DLNA跨设备流媒体)。 4. **V2X集成**:通过DSRC/C-V2X模块接收交通信号灯信息并可视化。 --- ### **六、学习建议(针对车载HMI项目经理)** 1. **技术理解**: - 学习AUTOSAR架构中HMI-Machine(HMI-M)的定义。 - 掌握QNX Screen图形子系统与Android SurfaceFlinger的差异。 2. **工具链**: - 原型设计:使用Qt Design Studio(适配QNX)或Android Studio Layout Editor。 - 性能分析:QNX Momentics System Profiler + Android Systrace。 3. **标准规范**: - 研究ISO 9241-210(人机交互人体工学)和ISO 26262(功能安全)。 --- 通过HMI设计,可在确保安全的前提下提升驾驶体验。建议从实际车型的HMI案例(如特斯拉Model 3/蔚来ET7)入手,分析其交互范式与技术实现路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值