使用openUBMC社区提供的研发Docker镜像,利用Docker强大的能力,开发者可以跳过复杂的开发环境准备工作,直接开展业务开发。我们为不同操作系统的开发者提供了不同的安装Docker的教程。
- Windows, Mac, Ubuntu Desktop用户安装Docker,请参考安装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
方式二:通过Docker官方镜像站进行安装
当然您可以根据需求选用Docker官方的镜像进行安装。详情请参考Docker官网进行安装https://docs.docker.com/engine/install/ubuntu/
获取openUBMC开发Docker镜像
方式一:通过华为云开源镜像站进行安装(推荐)
在完成Docker安装后,可以通过拉取openUBMC的Docker镜像快速完成环境的搭建。
打开命令行,运行
docker pull拉取镜像bashdocker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09运行
docker image ls查看镜像是否加载成功bash> docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu 24.04.2_25.09 -- 3 days ago 2.33GB
方式二:本地安全构建镜像
如果您需要使用特定版本的SDK包,或网络无法连接公共仓库,可以参考manifest代码仓的README使用自动化脚本在本地构建镜像。
该方案使用了Docker BuildKit的--mount=type=secret安全机制,确保您的Conan账号密码仅在构建过程中临时挂载使用,构建完成后会自动清除Conan配置,不会留在镜像历史中。
创建Container实例
在主机侧先创建工作文件夹,作为主机侧和Container侧共享的文件夹,方便代码和构建产物管理。以Linux环境为例:
bashmkdir /root/workspace如果您使用的是windows+docker_desktop方案,您可以在windows电脑中创建一个类似的文件夹,便于代码的管理。
运行
docker run创建Container实例openubmcbashdocker run -itd --privileged=true --mount type=bind,source=/root/workspace,target=/home/workspace --name openubmc swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 /bin/bash docker run -itd --privileged=true\ -p <BMC Studio服务端口>:10000 \ -p <qemu ssh对外服务端口>:<qemu ssh容器内服务端口> \ ... --mount type=bind,source=/root/workspace,target=/home/workspace \ --restart=always --name openubmc swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 /bin/bash参数说明:
-itd让container在后台持续运行,需要构建BMC时可以复用Container,避免每次构建都重复创建Container.--privileged=true使容器内的root用户真正拥有了root权限,否则容器中的root用户只是一个外部普通用户权限。-p配置容器的端口映射,请按需配置,例如BMC Studio默认端口号为10000;qemu的ssh服务默认为10022,telnet端口号默认10023,https服务端口号默认10443,ipmi服务端口号默认10623。如需SSH远程连接容器,请额外配置SSH端口映射,例如-p <宿主机SSH端口>:<容器内SSH端口>--mount将上述在宿主机创建的工作文件夹/root/workspace与Container中的/home/workspace链接作为同步文件夹。--restart=always系统重启时自动启动容器。--name定义容器的名称。
通过
docker ps查看创建的实例,可以看到container id对应的Container状态bash> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7e83bed8fcfe swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 "/bin/bash" About a minute ago Up About a minute openubmc通过
docker exec -it进入Container进行操作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退出Container。之后可通过docker exec -it再次进入Containerbashexit
配置SSH远程连接
如果您希望通过SSH远程连接到Docker容器,可以按照以下步骤进行配置。
注意
进行以下配置前,请确保启动容器时已配置SSH端口映射,例如:-p <宿主机SSH端口>:<容器内SSH端口>
容器内安装SSH服务
进入容器后,执行以下命令安装openssh-server:
apt-get update && apt-get install -y openssh-server net-tools配置SSH服务
修改 /etc/ssh/sshd_config 配置文件,确保包含以下配置项:
PermitRootLogin yes
PasswordAuthentication yes安全提示
上述配置仅适用于开发环境,不建议在生产环境中使用。生产环境建议使用密钥认证方式(PubkeyAuthentication yes)替代密码认证。
说明
PermitRootLogin:允许root用户通过SSH登录PasswordAuthentication:启用密码认证方式
容器内SSH服务默认监听端口 22,端口映射由 Docker 的 -p 参数控制。例如:-p 2222:22 表示将容器内 22 端口映射到宿主机 2222 端口。
启动SSH服务并设置密码
在容器内执行以下命令启动SSH服务并设置root密码:
service ssh start
passwd root根据提示输入并确认root密码,该密码将用于SSH登录。
配置客户端SSH连接
在宿主机或开发机上配置SSH连接。编辑 ~/.ssh/config 文件(Windows用户为 C:\Users\<用户名>\.ssh\config),添加以下内容:
Host <自定义连接名称>
HostName <主机IP或localhost>
User root
Port <宿主机SSH端口>配置说明:
Host:自定义的连接名称,便于识别HostName:Docker宿主机的IP地址,如Docker运行在本机可使用localhostPort:容器启动时配置的宿主机SSH端口
配置完成后,即可使用SSH客户端(如 ssh <自定义连接名称>)连接到容器。此SSH连接可用于通用远程开发场景(如 bmcstudio Remote SSH插件、终端直连等),若使用openUBMC Studio,则可以点击左侧边栏的远程连接按钮连接到远程主机。
控制Container的运行状态
在重新启动os后,Container便会停止操作,此时可以通过docker start重新拉起Container
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_25.09 "/bin/bash" About a minute ago Up About a minute openubmcContainer内部署远程conan服务
openUBMC升级包和组件构建需要依赖已构建的conan制品,这部分制品放置在远程conan服务器中,需要在Container内配置,以连接远程conan服务器。
25.09及之后发布的组件(Conan 2.x)
sdk conan remote命名遵循 https://conan.openubmc.cn/bmc_sdk_{版本号},如 25.12 对应 https://conan.openubmc.cn/bmc_sdk_25.12 25.12_LTS-SP1 对应 https://conan.openubmc.cn/bmc_sdk_25.12-LTS-SP1 latest一般为最新版本,如最新为25.12,https://conan.openubmc.cn/bmc_sdk_latest等同https://conan.openubmc.cn/bmc_sdk_25.12
conan profile detect --force
conan remote add openubmc_sdk 'https://conan.openubmc.cn/bmc_sdk_latest' --insecure --force
conan remote login openubmc_sdk <openUBMC社区用户名> -p <openUBMC社区用户密码>
conan remote add openubmc_opensource 'https://conan.openubmc.cn/openubmc_opensource' --insecure --force
conan remote login openubmc_opensource<openUBMC社区用户名> -p <openUBMC社区用户密码>25.09以前发布的组件(Conan 1.x)
conan config init
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" false -f
conan user <openUBMC社区用户名> -p=<openUBMC社区用户密码> -r openubmc_dev常见问题(FAQ)
使用Docker时遇到的问题请参考《常见问题解答(FAQ)》尝试解决或在社区论坛中反馈