开发板 Docker 环境构建方法
1.1. Docker 简介
Docker 是目前使用最广泛的开源容器引擎,可为每个应用程序提供完全隔离的运行环境。用户可以在环境中配置各种工具和软件,不同环境之间不会相互影响。目前已完成对 EASY-EAI-Nano 的适配,用户可以随时随地进行部署。Dockerfile、Image(镜像)、Container(容器)是 Docker 中的三个重要概念。通过 Image 可以创建多个 Container,而通过 Dockerfile 这一自动化脚本可以创建 Image。
**Dockerfile**:也称为镜像描述文件,是包含用于构建镜像的命令的文本文档,也可以称为“脚本”。用户通过 `docker build` 命令读取 Dockerfile 中的指令和安装步骤,自动生成镜像。
**Image(镜像)**:一种文件系统,用于提供容器运行时所需的文件和参数配置。它相当于平时使用某个软件时下载的安装包,也相当于安装操作系统(OS)时所需的 ISO 文件。
**Container(容器)**:一种与环境无关的软件打包方式。应用程序的所有代码、库以及依赖的配置项都会被打包到容器中。与虚拟机不同,容器不会创建完整的虚拟操作系统,而是允许应用程序使用与其运行系统相同的 Linux 内核。此外,应用程序只需与主机上尚未运行的内容(所需依赖项)一同提供即可。

1.1. Docker 简介 图1
1.2. Docker 环境构建
1.2.1 安装 Docker
进入开发板环境,更新软件包数据库后安装 Docker。
adb shell
1.2.1 安装 Docker 图2
apt-get update
1.2.1 安装 Docker 图3
apt-get install docker.io
1.2.1 安装 Docker 图4
docker version
1.2.1 安装 Docker 图5
1.2.2 获取镜像
根据需要获取镜像。也可以配置国内镜像源。
sudo vim /etc/docker/daemon.json{"registry-mirrors":\["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://ueo0uggy.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://cf-workers-docker-io-apl.pages.dev"\]}保存并退出编辑器,然后重启 Docker 服务。
sudo systemctl restart dockerdocker pull ubuntu
1.2.2 获取镜像 图6
由于此方法未指定标签,Docker Engine 会使用 :latest 作为默认标签拉取镜像。 另一种方法是将镜像保存为本地文件,并直接使用生成的文件进行共享。 查看本地机器上已保存(下载)的镜像信息列表:
docker images
1.2.2 获取镜像 图7
1.2.3 Docker 容器运行与基本操作
启动容器有两种方法。方法 1:使用 Docker 镜像的 TAG(标签:指特定的镜像快照)启动。方法 2:使用 ImageID(镜像 ID:镜像对应的唯一识别码)启动。下面演示【使用 Docker 镜像的 TAG】启动容器的方法。
docker run -t -i ubuntu:latest /bin/bash* -t:在 Ubuntu 容器内分配一个伪终端(pseudo-TTY)。
* -i:通过从容器获取标准输入(STDIN),可以创建交互式连接。
* ubuntu:latest:标签为 latest 的 Ubuntu Docker 镜像。
* /bin/bash:新容器的 BASH shell。这是可选项。如果不指定 shell,则会为容器分配默认 shell。
启动容器后,会自动进入容器的 shell(命令行)。

1.2.3 Docker 容器运行与基本操作 图8
按下 CTRL+P 后再按 CTRL+Q 即可从当前容器中分离(detach),并返回主机系统终端。注意:这只是从容器中分离,并不表示停止容器。容器仍会在后台继续运行。
在 Docker 主机终端中执行以下命令,查找容器名称和 ID:
docker ps -a
1.2.3 Docker 容器运行与基本操作 图9
找到 ID 后,即可对容器执行相关操作。
暂停和恢复正在运行的容器
docker pause DockerIDdocker unpause DockerID
1.2.3 Docker 容器运行与基本操作 图10
启动容器
docker start Docker名
1.2.3 Docker 容器运行与基本操作 图11
删除容器
首先,需要结束(停止)正在运行的容器。
docker stop DockerID
1.2.3 Docker 容器运行与基本操作 图12
当所有容器都不再需要时,逐个删除多个容器会比较繁琐。因此,可以批量删除所有已停止的容器。要批量删除所有已停止的容器,请执行以下命令:
docker container prune
1.2.3 Docker 容器运行与基本操作 图13
删除后执行 docker ps -a 查看所有容器时,会显示列表为空。

1.2.3 Docker 容器运行与基本操作 图14
删除 Docker 镜像
docker rmi 镜像ID
1.2.3 Docker 容器运行与基本操作 图15