| ||
互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。Docker只所以发展如此迅速,也因其对这些情况给出了一个标准化的解决方案。本文将以我们武汉万象奥科电子有限公司的i.MX6ULL评估套件作为平台,搭建支持docker的嵌入式环境。
Docker是基于Go语言实现的开源容器项目,设想这么一个情况,应用层、服务等操作需要在多种不同的嵌入式平台搭建,每移植到一个平台上时,需要为每个平台搭建环境,例如安装Apache、MySQL、PHP等环境,每次引入新平台都是一轮耗时耗力的工程。
而Docker提供一种更为聪明便捷的方法,通过容器来打包应用、解耦应用和运行平台。意味着导入新平台时,只需新平台内运行docker容器,就可以快速完成部署。
本节简单介绍一下Docker的三大核心概念,更详细请根据网上资料专业学习Docker知识。
表1.1 Dokcer的三大核心概念
目前最大的公开仓库是官方提供的Docker Hub,其中存放着数量庞大的镜像供用户下载。同时国内的企业也逐步构建起自己的业务镜像,如华为云的IOT边缘 IoTEdge、阿里云等服务,都逐渐去底层差异化。
当用户搭建好自己的镜像后,只需push命令上传到指定的仓库。在新的机器上,只需pull命令将镜像从仓库下载下来。
本文档使用我司的HD-IMX6ULL-MB评估套件来实现docker环境,硬件产品如下所示。
硬件平台环境条件如下所示。
表1.2 硬件平台资源
使用我司特别提供的固件(可快速安装docker),快速部署验证。固件包为“mfgtools_imx6ull_emmc_ubuntu18.04_filesystem_全开源核心板.zip”,需要验证的客户可直接联系我司的销售工程师获取即可。内容如下所示。
烧录步骤参考用户手册即可,这里不再赘述。
上述固件包内已经是Ubuntu系统镜像,我们只需在此环境下直接使用命令安装docker环境即可。系统安装docker环境的操作步骤如下所示。
首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。
然后清除旧版本的docker软件,再重新安装docker.io。
启动docker。
使能docker开机自启动。
检查docker运行状态。
运行此命令可以从Docker Hub上下载现成镜像。
查看本地的镜像文件命令如下所示。
如上文所说,镜像可以看作一个只读模板,而容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。
创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。
查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于简便使用)。
容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。
使用NAMES来操作容器的命令如下所示。
上文所说,容器是运行一个或一组进程,docker ps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。
进入后,可以操作容器内的命令,如下所示。
通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。