使用openUBMC社区提供的研发Docker镜像,利用Docker强大的能力,开发者可以跳过复杂的开发环境准备工作,直接开展业务开发。我们为不同操作系统的开发者提供了不同的安装Docker的教程。
TIP
如果您使用 openUBMC Studio,完成 Docker 安装后,可以通过 Studio 内置的 Docker 容器管理功能,直接在 Studio 内完成镜像拉取、容器创建和远程连接,无需手动执行后续的命令行操作,更加简单便捷。详见 openUBMC Studio 安装指南。
- Windows, Mac, Ubuntu Desktop桌面用户请安装Docker Desktop,请参考安装Docker Desktop
- Ubuntu Server或者其他Linux发行版命令行用户安装Docker,请参考安装Docker CE
注意
Docker Engine安装指南请以官方文档为准https://docs.docker.com/engine/install/。
安装Docker工具
安装Docker Desktop(Windows、Mac、Ubuntu Desktop用户推荐)
- 前往Docker官网下载
Docker Desktop最新发行版:https://www.docker.com/products/docker-desktop/ - 根据安装程序引导进行安装。
- 安装成功后,可以打开自己操作系统的命令行,输入
docker ps验证docker是否安装成功
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES安装Docker CE(Ubuntu、其他Linux发行版用户推荐)
Docker CE是Docker在Linux上的版本。大部分Linux发行版本身的镜像仓中并没有直接的安装包,因此需要将Docker的镜像来源添加后才可安装。
此处以Ubuntu amd64架构作为例子,其他Linux发行版请参考Docker官方文档https://docs.docker.com/engine/install/
安装流程来源于https://mirrors.huaweicloud.com/mirrorDetail/5ea14d84b58d16ef329c5c13
如果之前安装了非Docker CE的Docker引擎,则需要卸载非
Docker CE的Docker引擎。通常可以通过执行docker version来查看是否存在Server: Docker Engine - Community字段,若存在则可跳过Docker CE的安装。bashsudo apt-get remove docker docker-engine docker.io安装Docker引擎的依赖
bashsudo apt-get update sudo apt-get install lsb-release apt-transport-https ca-certificates curl gnupg2 software-properties-common信任Docker的GPG公钥:
bashcurl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -添加软件仓库:
bashsudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"安装
Docker CEbashsudo apt-get update sudo apt-get install docker-ce安装成功后,如果当前用户为非root用户,需要将用户加入
docker组以获取Docker操作权限:bashsudo usermod -aG docker $USER newgrp docker说明
Docker守护进程以root用户运行,
/var/run/docker.sock默认仅允许root和docker组成员访问。通过usermod -aG docker将当前用户追加到docker组,再执行newgrp docker使权限立即生效,非root用户即可正常使用Docker命令。输入
docker ps验证Docker是否安装成功bash> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
创建openUBMC开发窗器
通过华为云开源镜像站下载镜像
在完成Docker安装后,可以通过拉取openUBMC的Docker镜像快速完成环境的搭建。
打开命令行,运行
docker pull拉取镜像bashdocker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.03运行
docker image ls查看镜像是否加载成功bash> docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu 24.04.2_26.03 -- 3 days ago 2.33GB
创建容器实例
在主机侧先创建工作文件夹,作为主机侧和容器侧共享的文件夹,方便代码和构建产物管理。以Linux环境为例:
bashmkdir /root/workspace如果您使用的是windows+docker_desktop方案,您可以在windows电脑中创建一个类似的文件夹,便于代码的管理。
运行
docker run创建容器实例openubmc。以下为完整命令,可根据实际需要调整端口映射:bash# linux 命令 docker run -itd --privileged=true -p 10000:10000 -p 10022:22 -p 10023:10023 -p 10443:10443 -p 10623:10623 --mount type=bind,source=/root/workspace,target=/home/workspace --restart=always --name openubmc swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.03 /bin/bash # windows 命令 docker run -itd --privileged=true -p 10000:10000 -p 10022:22 -p 10023:10023 -p 10443:10443 -p 10623:10623 --mount type=bind,source=C:\workspace,target=/home/workspace_data --restart=always --name openubmc swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.03 /bin/bash关于容器说明
上述命令将创建一个名为openubmc的容器,容器名具有唯一性,因为多次执行上述命令将产生容器重命冲突,需要使用docker stop openubmc、docker rm openubmc等命令删除之前创建的容器。
Windows 用户注意
Windows 文件系统(NTFS)与 Linux 文件系统存在权限模型差异,可能导致以下问题:
- 可执行权限丢失:从 Windows 拷贝的脚本文件可能无法直接执行
- 文件所有者映射异常:文件可能显示为
nobody用户
解决方案:
- 后续编译构建将在/home/workspace目录中进行。
- 上述windows创建容器的命令将用户 C:\workspace 目录映射到容器的 /home/data 目录,用户可以通过 /home/data 目录向主机传递文件。
参数说明:
-itd让容器在后台持续运行,需要构建BMC时可以复用容器,避免每次构建都重复创建容器.--privileged=true使容器内的root用户真正拥有了root权限,否则容器中的root用户只是一个外部普通用户权限。-p配置容器的端口映射,请按需配置。默认端口映射如下:- BMC Studio:
10000:10000 - qemu SSH:
10022:22 - qemu telnet:
10023:10023 - qemu HTTPS:
10443:10443 - qemu IPMI:
10623:10623 - 如需SSH远程连接容器,请额外配置如
-p 2222:22
- BMC Studio:
--mount将上述在宿主机创建的工作文件夹/root/workspace与容器中的/home/workspace链接作为同步文件夹。--restart=always系统重启时自动启动容器。--name定义容器的名称。
通过
docker ps查看创建的实例,可以看到container id对应的容器状态bash> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7e83bed8fcfe swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.03 "/bin/bash" About a minute ago Up About a minute openubmc通过
docker exec -it进入容器进行操作bashdocker exec -it openubmc /bin/bashbash> ls bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var必要时,可输入
exit退出容器。之后可通过docker exec -it再次进入容器bashexit
控制容器的运行状态
在重新启动os后,容器便会停止操作,此时可以通过docker start重新拉起容器
docker start openubmc执行完毕后,可以通过docker ps查询状态
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e83bed8fcfe swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.03 "/bin/bash" About a minute ago Up About a minute openubmc常见问题(FAQ)
使用Docker时遇到的问题请参考《常见问题解答(FAQ)》尝试解决或在社区论坛中反馈
回到环境准备章节继续
至此,你已经创建了ubuntu 24.04容器,请回到 《环境准备简介》 继续完成环境准备。