Docker开发环境搭建
更新时间: 2025/12/23
在Gitcode上查看源码

使用openUBMC社区提供的研发Docker镜像,利用Docker强大的能力,开发者可以跳过复杂的开发环境准备工作,直接开展业务开发。我们为不同操作系统的开发者提供了不同的安装Docker的教程。

  1. Windows, Mac, Ubuntu Desktop用户安装Docker,请参考安装Docker Desktop
  2. Ubuntu Server或者其他Linux发行版用户安装Docker,请参考安装Docker CE

注意

Docker Engine安装指南请以官方文档为准https://docs.docker.com/engine/install/

Docker安装

安装Docker Desktop(Windows、Mac、Ubuntu Desktop用户推荐)

  1. 前往Docker官网下载Docker Desktop最新发行版:https://www.docker.com/products/docker-desktop/
  2. 根据安装程序引导进行安装。
  3. 安装成功后,可以打开自己操作系统的命令行,输入docker ps验证docker是否安装成功
bash
> 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

  1. 如果之前安装了非Docker CE的Docker引擎,则需要卸载非Docker CE的Docker引擎。通常可以通过执行docker version来查看是否存在Server: Docker Engine - Community字段,若存在则可跳过Docker CE的安装。

    bash
    sudo apt-get remove docker docker-engine docker.io
  2. 安装Docker引擎的依赖

    bash
    sudo apt-get update
    sudo apt-get install lsb-release apt-transport-https ca-certificates curl gnupg2 software-properties-common
  3. 信任Docker的GPG公钥:

    bash
    curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  4. 添加软件仓库:

    bash
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  5. 安装Docker CE

    bash
    sudo apt-get update
    sudo apt-get install docker-ce
  6. 安装成功后,可以打开命令行,输入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镜像快速完成环境的搭建。

  1. 打开命令行,运行docker pull拉取镜像

    bash
    docker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09
  2. 运行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实例

  1. 在主机侧先创建工作文件夹,作为主机侧和Container侧共享的文件夹,方便代码和构建产物管理。以Linux环境为例:

    bash
    mkdir /root/workspace

    如果您使用的是windows+docker_desktop方案,您可以在windows电脑中创建一个类似的文件夹,便于代码的管理。

  2. 运行docker run创建Container实例openubmc

    bash
    docker 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
    • --mount 将上述在宿主机创建的工作文件夹/root/workspace与Container中的/home/workspace链接作为同步文件夹。
    • --restart=always 系统重启时自动启动容器。
    • --name 定义容器的名称。
  3. 通过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
  4. 通过docker exec -it进入Container进行操作

    bash
    docker exec -it openubmc /bin/bash
    bash
    > 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再次进入Container

    bash
    exit

控制Container的运行状态

在重新启动os后,Container便会停止操作,此时可以通过docker start重新拉起Container

bash
docker start openubmc

执行完毕后,可以通过docker ps查询状态

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

Container内部署远程conan服务

openUBMC升级包和组件构建需要依赖已构建的conan制品,这部分制品放置在远程conan服务器中,需要在Container内配置,以连接远程conan服务器。

25.09及之后发布的组件(Conan 2.x)

bash
conan profile detect --force
conan remote add openubmc_dev "https://conan.openubmc.cn/conan_1/" --insecure --force
conan remote login openubmc_dev <openUBMC社区用户> -p <openUBMC社区用户密>

25.09以前发布的组件(Conan 1.x)

bash
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)》尝试解决或在社区论坛中反馈