)
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 docker2修改标签名称。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.04创建并启动容器。Target#docker run -itd --name led_flash --platform linux/arm/v7 -v /sys/:/sys led_flash参数说明-itd以交互模式运行容器并将容器的标准输入连接到交互终端以守护进程模式运行容器--platform指定容器运行的平台--name为容器指定一个名称-v映射卷将主机的目录/sys映射至容器的/sysled_flash镜像名字。容器启动完成后单板机用户指示灯闪烁。执行如下命令可查看当前容器占用资源情况。MEM USAGE表示容器占用内存LIMIT表示容器可使用的最大内存。Target#docker stats5容器的基本操作。执行如下命令查看正在运行的容器并进入容器。Target#docker psTarget#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_flash4.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.0Target#docker pull 192.168.12.54:5000/docker_container_3_echo.sh:v1.0Target#docker images //列举已下载的镜像备注由于led_flash镜像已在“下载单个镜像并运行容器”章节中下载、创建并启动容器因此本章节不再演示。2修改标签名称。Target#docker tag 192.168.12.54:5000/docker_container_1_echo.sh:v1.0 container_1_echoTarget#docker tag 192.168.12.54:5000/docker_container_2_echo.sh:v1.0 container_2_echoTarget#docker tag 192.168.12.54:5000/docker_container_3_echo.sh:v1.0 container_3_echo3删除旧标签名称。Target#docker rmi 192.168.12.54:5000/docker_container_1_echo.sh:v1.0Target#docker rmi 192.168.12.54:5000/docker_container_2_echo.sh:v1.0Target#docker rmi 192.168.12.54:5000/docker_container_3_echo.sh:v1.04执行如下命令创建并启动容器。Target#docker run -itd --platform linux/arm/v7 --name docker_container_1_echo container_1_echo /bin/bashTarget#docker run -itd --platform linux/arm/v7 --name docker_container_2_echo container_2_echo /bin/bashTarget#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 stats5容器的基本操作执行如下命令查看正在运行的容器并进入docker_container_2_echo容器。备注docker_container_1_echo、docker_container_3_echo容器可参考该操作进行测试。Target#docker psTarget#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 -h2已下载Docker镜像执行如下命令查看系统已下载4个Docker镜像时的磁盘使用情况以及Docker磁盘空间使用情况。Target#df -hTarget#docker system df //查看Docker磁盘空间使用情况可以查看到4个Docker镜像与容器占用内存的总大小约为55.32MByte。由于构建Docker镜像的文件系统是同一个而Docker镜像中相同的内容会重叠在一起不需重新占用内存因此4个Docker镜像和容器占用的内存总大小约为55.32MByte。