SDK 镜像编译(Docker 环境)
1. Docker 简介
Docker 是一种轻量级的容器化平台,用于打包、分发和运行应用程序及其依赖项。它基于容器技术,将应用程序及其运行所需的全部环境封装在一个独立、可移植的容器中,从而确保应用在不同环境中的一致性运行。这种方式显著提高了开发、部署与扩展的效率。 Docker 的核心理念是通过镜像(Image)来定义应用程序及其运行环境,并利用容器(Container)将其实际运行起来。容器可以在任何支持 Docker 的操作系统或云平台中无缝运行,具备轻量、高效和隔离性的优势。
- 容器(Container): Docker 使用容器来封装应用程序及其所有依赖关系,包括代码、运行时、系统工具、系统库等。容器提供了一种轻量级、一致性和可移植性的方式,使应用程序能够在不同环境中运行。
- 镜像(Image): 镜像是容器的基础,它包含了运行容器所需的所有信息,如文件系统、库、配置等。镜像可以被共享、存储在仓库中,并通过网络传输。
- 仓库(Repository): 镜像被存储在仓库中,便于集中管理和共享。Docker 支持公共仓库(如 Docker Hub)和私有仓库,用户可以从仓库中拉取所需镜像,也可以将自定义镜像推送到仓库中以供他人使用或部
- Docker 工具的安装(安装 Docker 引擎):
sudo apt install docker.io -y
- Docker 镜像的获取:(推荐国内用户直接下载离线版本镜像)
sudo docker pull luckfoxtech/luckfox_pico:1.0
- Docker 离线镜像的获取:
| 版本 | 描述 | 下载 |
|---|---|---|
| luckfoxtech/luckfox_pico 1.0 | Docker镜像离线下载 | Docker百度网盘链接 |
# docker镜像安装
sudo docker load -i ./luckfox_pico_docker.tar
提示
上述操作只是将 Docker 工具安装到系统中,相当于安装了“容器运行平台”。 要运行容器,还需要使用 docker run 或 docker start 等命令显式地启动一个容器。
2. Docker 镜像编译
- 获取最新的 SDK:(可任选以下两种方式,推荐国内用户使用 Gitee)
git clone https://gitee.com/LuckfoxTECH/luckfox-pico.gitgit clone https://github.com/LuckfoxTECH/luckfox-pico.git
- 启动一个交互式的容器,使用名为 "luckfox",并将本地主机上的 SDK 目录映射到容器内的 /home 目录,最后以 Bash shell 运行。
sudo docker run -it --name luckfox --privileged -v /home/ubuntu/luckfox-pico:/home luckfoxtech/luckfox_pico:1.0 /bin/bash
-it:运行一个交互式容器--name:可以为容器指定一个名称,使得容器更易于识别和管理-v:选项可以将主机上的目录或文件挂载到容器内部。上述例子中,将主机上的 /home/ubuntu/luckfox-pico 目录挂载到容器内的 /home 目录
- 若容器已存在,第二次运行可直接使用以下命令启动:
sudo docker start -ai luckfox
- 在开始编译前,请根据实际使用的开发板型号,选择对应的代码分支,以确保编译出的镜像能够正确运行。
root@b165d8d4c29b:# cd /homeroot@807131c0df36:/home# ./build.sh lunchYou're building on LinuxLunch menu...pick the Luckfox Pico hardware version:选择 Luckfox Pico 硬件版本:[0] RV1103_Luckfox_Pico[1] RV1103_Luckfox_Pico_Mini[2] RV1103_Luckfox_Pico_Plus[3] RV1103_Luckfox_Pico_WebBee[4] RV1106_Luckfox_Pico_Pro_Max[5] RV1106_Luckfox_Pico_Ultra[6] RV1106_Luckfox_Pico_Pi[7] RV1106_Luckfox_Pico_86Panel[8] RV1106_Luckfox_Pico_Zero[9] customWhich would you like? [0~9][default:0]: 5Lunch menu...pick the boot medium:选择启动媒介:[0] EMMCWhich would you like? [0][default:0]: 0Lunch menu...pick the system version:选择系统版本:[0] BuildrootWhich would you like? [0][default:0]: 0[build.sh:info] Lunching for Default BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk boards...[build.sh:info] switching to board: /home/ubuntu/Luckfox/rv1106/sdk-latest/luckfox-pico/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk[build.sh:info] Running build_select_board succeeded.root@807131c0df36:/home# ./build.sh
3. 将用户添加到 Docker 组
在Ubuntu系统上,需要在运行Docker命令时添加 sudo 是因为 Docker 守护进程默认以 root 用户权限运行。 Docker 执行一些需要特权权限的操作,如访问系统资源、管理容器、构建镜像、挂载文件系统等,以确保安全性和系统稳定性。如果希望不每次都使用 sudo 运行 Docker 命令,可以将当前用户加入 docker 组。
- 运行以下命令将当前用户添加到docker组中:
sudo usermod -aG docker $USER
- 注销并重新登录,或者运行以下命令使更改生效:
sudo service docker restartnewgrp docker
3.确保用户 luckfox 已经成功添加到 docker 组。可以使用以下命令检查:
id luckfox
4. Docker 常见命令
以下是 Docker 的一部分命令。要查看完整的命令列表和帮助信息,请运行 docker --help。
- 镜像相关命令:
docker pull luckfoxtech/luckfox_pico:1.0 #从 Docker Hub 下载镜像。docker images #列出本地所有的镜像。docker rmi luckfoxtech/luckfox_pico:1.0 #删除本地一个或多个镜像。docker search [image] #在 Docker Hub 上搜索镜像。
- 容器相关命令:
docker ps #列出当前运行的容器。docker ps -a #列出所有的容器,包括停止的。
- 容器操作:
docker start 1758 #启动一个停止的容器docker stop 1758 #停止一个运行中的容器docker restart 1758 #重启一个容器docker exec -it 1758 ls #在运行中的容器中执行命令docker exec -it 1758 bash #进入一个已经打开的容器docker rm 1758 #删除一个或多个容器exit #退出
- 运行容器:
sudo docker run -it --name luckfox --privileged -v /home/ubuntu/luckfox-pico:/home luckfoxtech/luckfox_pico:1.0 /bin/bash
-it:运行一个交互式容器--name:可以为容器指定一个名称,使得容器更易于识别和管理-v:选项可以将主机上的目录或文件挂载到容器内部。上述例子中,将主机上的 /home/ubuntu/luckfox-pico 目录挂载到容器内的 /home 目录
- 若容器已存在,第二次运行可直接使用以下命令启动:
sudo docker start -ai luckfox
- 系统信息:
docker logs 1758 #查看容器的日志docker inspect 1758 #查看容器的详细信息docker rmi luckfoxtech/luckfox_pico:1.0 #删除本地一个或多个镜像docker top 1758 #查看容器中运行的进程
- Docker 容器的ID是唯一的,因此在大多数情况下,仅提供其前几位字符即可唯一标识容器。请在实际使用命令时,将示例中的容器ID替换为你自己的容器ID(或其前缀)。