news 2026/10/23 2:53:13

TLT153 工控机:Docker 环境部署与容器开发实践(下)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TLT153 工控机:Docker 环境部署与容器开发实践(下)

4 下载镜像并运行容器

下载镜像前,需要先开启Docker相关服务,并确保存储驱动配置正确。

(1)配置Docker存储驱动

不同系统环境可能导致Docker默认存储驱动(overlayfs/overlay2)不一致,执行以下命令,显式指定Docker默认存储驱动为overlay2,以保证一致性。

Target# vi /etc/docker/daemon.json //编辑Docker工具配置文件

请在daemon.json中添加如下配置内容:

{

"storage-driver": "overlay2"

}

(2)开启Docker相关服务

Target#systemctl enable docker //开启docker服务

Target#systemctl enable containerd //开启containerd服务(docker容器)

开启后请重启单板机。

4.1下载多个镜像并运行容器

(1)请使用网线将单板机任意LAN网口连接至路由器,并确保和Ubuntu处于同一网络下,单板机上电启动,执行如下命令下载镜像并列举出下载后的镜像。

Target#docker pull 192.168.12.54:5000/led_flash:v1.0 //下载镜像

Target#docker images //列举已下载的镜像

若出现如下错误,请执行如下命令,通过修改"/etc/docker/daemon.json"文件来解决此问题,修改保存后,重新启动dockerd守护进程。

Target#vi /etc/docker/daemon.json

请在daemon.json中添加如下配置内容:

{

"insecure-registries": ["192.168.12.54:5000"]

}

Target#systemctl restart docker

(2)修改标签名称。

Target#docker tag 192.168.12.54:5000/led_flash:v1.0 led_flash //为本地已有的Docker镜像创建一个新的标签

Target#docker images //列举已下载的镜像

(3)删除旧标签名称。

Target#docker rmi 192.168.12.54:5000/led_flash:v1.0

(4)创建并启动容器。

Target#docker run -itd --name led_flash --platform linux/arm/v7 -v /sys/:/sys led_flash

参数说明:

-itd:以交互模式运行容器,并将容器的标准输入连接到交互终端,以守护进程模式运行容器;

--platform:指定容器运行的平台;

--name:为容器指定一个名称;

-v:映射卷(将主机的目录"/sys"映射至容器的"/sys");

led_flash:镜像名字。

容器启动完成后,单板机用户指示灯闪烁。执行如下命令,可查看当前容器占用资源情况。"MEM USAGE"表示容器占用内存;"LIMIT"表示容器可使用的最大内存。

Target#docker stats

(5)容器的基本操作。

执行如下命令,查看正在运行的容器并进入容器。

Target#docker ps

Target#docker exec -it led_flash /bin/bash

参数说明:

-i:以交互模式运行容器,通常与-t同时使用;

-t:为容器重新分配一个伪输入终端,通常与-i同时使用;

led_flash:容器名称,以实际"NAMES"为准;

/bin/bash:在容器内执行"/bin/bash"命令。

执行如下命令,退出容器。

Bash#exit

执行如下命令,停止容器。此时,单板机用户指示灯不再闪烁。

Target#docker stop led_flash

执行如下命令,启动容器。此时,单板机用户指示灯闪烁。

Target#docker start led_flash

4.2下载多个镜像并运行容器

(1)请使用网线将单板机任意LAN网口连接至路由器,并确保和Ubuntu处于同一网络下,单板机上电启动,执行如下命令下载镜像并列举出下载后的镜像。

Target#docker pull 192.168.12.54:5000/docker_container_1_echo.sh:v1.0 //下载镜像,192.168.12.54为Ubuntu的IP地址

Target#docker pull 192.168.12.54:5000/docker_container_2_echo.sh:v1.0

Target#docker pull 192.168.12.54:5000/docker_container_3_echo.sh:v1.0

Target#docker images //列举已下载的镜像

备注:由于led_flash镜像已在“下载单个镜像并运行容器”章节中下载、创建并启动容器,因此本章节不再演示。

(2)修改标签名称。

Target#docker tag 192.168.12.54:5000/docker_container_1_echo.sh:v1.0 container_1_echo

Target#docker tag 192.168.12.54:5000/docker_container_2_echo.sh:v1.0 container_2_echo

Target#docker tag 192.168.12.54:5000/docker_container_3_echo.sh:v1.0 container_3_echo

(3)删除旧标签名称。

Target#docker rmi 192.168.12.54:5000/docker_container_1_echo.sh:v1.0

Target#docker rmi 192.168.12.54:5000/docker_container_2_echo.sh:v1.0

Target#docker rmi 192.168.12.54:5000/docker_container_3_echo.sh:v1.0

(4)执行如下命令,创建并启动容器。

Target#docker run -itd --platform linux/arm/v7 --name docker_container_1_echo container_1_echo /bin/bash

Target#docker run -itd --platform linux/arm/v7 --name docker_container_2_echo container_2_echo /bin/bash

Target#docker run -itd --platform linux/arm/v7 --name docker_container_3_echo container_3_echo /bin/bash

参数说明:

-itd:以交互模式运行容器,并将容器的标准输入连接到交互终端,以守护进程模式运行容器;

--platform:指定容器运行的平台;

--name:为容器指定一个名称;

container_1_echo、container_2_echo、container_3_echo:镜像名称。

/bin/bash:执行/bin/bash命令阻塞docker容器,防止容器自动退出,以便能进入容器运行脚本。

容器启动完成后,可执行如下命令查看当前容器占用资源情况。

Target#docker stats

(5)容器的基本操作

执行如下命令,查看正在运行的容器,并进入"docker_container_2_echo"容器。

备注:"docker_container_1_echo"、"docker_container_3_echo"容器可参考该操作进行测试。

Target#docker ps

Target#docker exec -it docker_container_2_echo /bin/bash

参数说明:

-i:以交互模式运行容器,通常与-t同时使用;

-t:为容器重新分配一个伪输入终端,通常与-i同时使用;

docker_container_2_echo:容器ID,以实际"NAMES"为准;

/bin/bash:在容器内执行"/bin/bash"命令。

执行如下命令,可查看脚本打印信息。

Target#./docker_container_2_echo.sh

执行如下命令,退出该容器。

Bash#exit

附录:Docker镜像使用概况

本附录主要说明安装Docker镜像前后对文件系统磁盘空间资源占用情况以及内存占用情况。

1未下载Docker镜像

进入单板机文件系统,执行如下命令,查看当前系统未下载Docker镜像时的磁盘使用情况。

Target#df -h

2已下载Docker镜像

执行如下命令,查看系统已下载4个Docker镜像时的磁盘使用情况以及Docker磁盘空间使用情况。

Target#df -h

Target#docker system df //查看Docker磁盘空间使用情况

可以查看到4个Docker镜像与容器占用内存的总大小约为55.32MByte。由于构建Docker镜像的文件系统是同一个,而Docker镜像中相同的内容会重叠在一起,不需重新占用内存,因此4个Docker镜像和容器占用的内存总大小约为55.32MByte。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 2:52:20

霍尔元件介绍

1、霍尔元件:在一个很小的矩形半导体(例如砷化铟)薄片上、制作四个电极E、F、M、N,它就成了一个霍尔元件。霍尔传感器原理,即半导体薄片置于磁感应强度为B的磁场中,磁场方向垂直于薄片。当有电流I流过薄片时…

作者头像 李华
网站建设 2026/10/23 2:52:19

LeetCode 215: 数组中的第K个最大元素 (快速排序) —— 题解

👋 欢迎阅读 🔥 愿旖旎 个人主页 📘 学习专栏: 《算法专栏》《LangChain学习》《贪心算法》 🌄 钱塘江上潮信来,今日方知我是我 ✨当前学习内容:《快速排序》 一.题目 215. 数组中的第K个最…

作者头像 李华
网站建设 2026/10/23 2:52:19

不依赖 Python 大环境!GGML 驱动端侧语音引擎,CPU 也能跑音色克隆

一、项目释义:为什么需要一款纯本地 TTS 引擎? 在语音合成领域,云端 API 虽然方便,但延迟、隐私和数据主权始终是痛点。当你的应用场景是离线语音助手、隐私敏感的客服系统、或者需要极低延迟的实时对话机器人时,你需要…

作者头像 李华
网站建设 2026/10/23 2:52:11

第三章 C++基本输入/输出

第三章 C基本输入/输出一、标准输入/输出1.1 流是什么流可以想成一条传送带。数据一件件放上去,从这头送到那头。程序不用关心传送带另一头接的是键盘、屏幕还是文件,拿到手里都是同一套读法。这也是这一章两节能放在一起学的原因,标准输入输…

作者头像 李华
网站建设 2026/10/23 2:51:56

【缺陷】镁合金压铸缩松与气孔的成因与控制

摘要 缩松和气孔是镁合金压铸最常见的两类内部缺陷,二者成因不同、检测手段不同、危害也不同,但经常在同一个零件上同时出现。本文按凝固机理分层梳理两类缺陷的形成链条,区分表面可检与内部隐蔽缺陷,给出设计端、模具端、工艺端…

作者头像 李华