对接Docker

MindIO ACP与未使用K8s管理的Docker对接时,需要使用Docker提供的原生命令,将宿主机上MindIO ACP的Domain Socket文件映射到容器中固定目录“/usr/local/mindio/uds/”,该Domain Socket用于在容器中运行的SDK与宿主机上MindIO ACP服务端程序之间通信,下发业务。以下列出两种场景的操作步骤。

创建新的容器

  1. 获取MindIO ACP在宿主机上的安装路径。下面MindIO ACP安装路径以“/opt/mindio”为例。
  2. 创建容器时,增加卷映射配置:“/opt/mindio/uds/:/usr/local/mindio/uds/”
  3. (可选)如果环境中使用了DPC访问存储,增加卷映射配置:“/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so:/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so”

在已经创建好的容器中增加卷映射

  1. 获取MindIO ACP在宿主机上的安装路径。下面MindIO ACP安装路径以“/opt/mindio”为例。
  2. 查看容器存放路径。

    docker info |grep Root

  3. 查询需要对接容器的Container ID。

    docker ps -a

  4. 停止该容器。以停止一个名称为“mygptdd”的容器为例。

    docker stop mygptdd

  5. 通过步骤 2步骤 3获取到的容器存放路径与Container ID,进入到该容器的存放目录。

    cd 容器存放路径/containers/Container ID/

    步骤 3查询到的Container ID为完整ID的前缀,在进入目录时,输入前缀后,通过Tab键自动补齐。

  6. 修改config.v2.json文件,增加卷映射配置。

    1. 打开config.v2.json文件。
      vim config.v2.json
    2. 输入以下内容后按“Enter”,以JSON格式对齐显示,便于编辑。
      :%!python -m json.tool
    3. 按“i”进入编辑模式,找到MountPoints,并在该配置项最后增加如下内容。
      "/opt/mindio/uds": {
                  "Source": "/opt/mindio/uds/",
                  "Destination": "/usr/local/mindio/uds/",
                  "RW": true,
                  "Name": "",
                  "Driver": "",
                  "Type": "bind",
                  "Relabel": "rw",
                  "Propagation": "rprivate",
                  "Spec": {
                      "Type": "bind",
                      "Source": "/opt/mindio/uds/",
                      "Target": "/usr/local/mindio/uds/"
                  },
                  "SkipMountpointCreation": false
              }
    4. (可选)如果环境中使用了DPC访问存储,继续在该配置项最后增加如下内容。
      "/opt/mindio/dpc-uds": {
                  "Source": "/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so",
                  "Destination": "/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so",
                  "RW": true,
                  "Name": "",
                  "Driver": "",
                  "Type": "bind",
                  "Relabel": "rw",
                  "Propagation": "rprivate",
                  "Spec": {
                      "Type": "bind",
                      "Source": "/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so",
                      "Target": "/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so"
                  },
                  "SkipMountpointCreation": false
              }
    5. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  7. 修改hostconfig.json配置文件。

    1. 打开hostconfig.json文件。
      vim hostconfig.json
    2. 输入以下内容后按“Enter”,格式化JSON文件,便于编辑。
      :%!python -m json.tool
    3. 按“i”进入编辑模式,找到Binds,在该配置项结尾,新增如下内容。
      "/opt/mindio/uds/:/usr/local/mindio/uds/:rw"
    4. (可选)如果环境中使用了DPC访问存储,继续新增如下内容。
      "/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so:/opt/oceanstor/dataturbo/sdk/lib/libdpc_nds.so:rw"
    5. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  8. 重启Docker服务。

    systemctl restart docker

    重启Docker服务,会停止该节点上所有运行的容器。

  9. 启动新增卷映射的容器,以容器名称为“mygptdd”为例。

    docker start mygptdd

  10. MindIO ACP SDK上传到容器中,参见在容器中安装MindIO ACP SDK完成SDK安装。
  11. 如果使用MindIO ACP加速服务的进程以非root用户运行,则需要将运行用户加入到HwHiAiUser组中,以用户“testuser”为例,命令如下:

    usermod -a -G HwHiAiUser testuser