---
title: 使用Docker制作镜像方式启动
description: "1. 请参见《Kbox云手机容器 特性指南(https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpskbox_20_0025.html)》中的“软件部署”章节，获取Kbox容器启动依赖组件base_box.sh，上传至服务器的“/home/kbox_instruction”目录（本文以此目录作为实例，可自行设置目录），并制作Kbox镜像。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpsinstruction_20_0024.html
sourcePath: /source/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpsinstruction_20_0024.html
indexId: 2480e357a9043234a5c92f48376e7fb8efd96496c4da4dae8f4e34a7c850132c85
---
# 使用Docker制作镜像方式启动

1. 请参见《Kbox云手机容器 特性指南(https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpskbox_20_0025.html)》中的“软件部署”章节，获取Kbox容器启动依赖组件base_box.sh，上传至服务器的“/home/kbox_instruction”目录（本文以此目录作为实例，可自行设置目录），并制作Kbox镜像。
2. 上传CloudPhoneInstructionEngine.tar.gz、InstructionPhoneAndroidRServer.tar.gz和InstructionPhoneClientSmokeApk.tar.gz至服务器的“/home/kbox_instruction”目录。
3. 解压InstructionPhoneAndroidRServer.tar.gz获取制作镜像脚本make_image.sh、Dockerfile，启动实例脚本cfct，并放在“/home/kbox_instruction”目录。

```
#cd /home/kbox_instruction
#tar xf InstructionPhoneAndroidRServer.tar.gz cfct Dockerfile make_image.sh
#chmod +x cfct make_image.sh base_box.sh
```


4. 制作镜像。
  运行make_image.sh脚本，生成Docker镜像。

  其中，“${tar_package}”为InstructionPhoneAndroidRServer.tar.gz。第一个“${镜像名称:tag}”为原镜像的名称和tag。第二个“${镜像名称:tag}”为新镜像的名称和tag。

```
# ./make_image.sh ${tar_package} ${镜像名称:tag} ${镜像名称:tag}
```


  通过chown -R root:root保证文件的所属用户及所属组修改为root用户，推荐用户使用此选项。 Dockerfile详解： FROM ${ORIGIN_IMAGE}的ORIGIN_IMAGE是机器中现有kbox镜像（本文以kbox镜像为基础镜像，请用户根据实际情况修改。注：若使用其他镜像存在不支持的可能性）。请根据实际情况查看对应的kbox镜像名是否正确。 RUN chown -R root:root instructionImage，此命令表示将文件的所属用户及所属组修改为root用户，建议用户将文件的所属用户以及所属组修改为root用户。本文以此命令为例，其他RUN命令与基本的linux命令作用类似，不再赘述。 ADD ./instructionEngine/vendor /instructionImage/vendor，此命令表示将本地文件夹（instructionEngine/vendor目录）中的文件复制到制作docker镜像的目录（instructionImage/vendor）中。其他ADD命令与此命令类似，不再赘述。

5. 检查镜像是否生成。
  运用docker命令进行查看镜像是否正确生成，并运用以下docker命令进行查看生成的镜像名称是否存在。

```
# docker images
```


  如果需要将制作的镜像迁移到其他服务器上使用，请参考以下三个步骤： 使用docker save -o android.tar kbox:0101命令进行保存，其中android.tar是其保存的镜像名，kbox:0101是现有环境镜像名。 将android.tar放在正常运行指令流云手机部署环境中，使用docker load -i android.tar命令进行镜像导入到部署环境中。 使用docker images命令可以正常看到kbox:0101镜像已经存在部署环境中。

6. 启动指令流云手机。
  其中“${镜像名称:tag}”为步骤4制作的新Kbox镜像的名称和tag，“${kbox_id}”为启动的指令流云手机实例的编号，用户可自定义。

```
# cd /home/kbox_instruction
# ./cfct run
${镜像名称:tag}
${kbox_id}
docker
```


  指令流云手机实例编号建议取值为1~100，实例编号如果不在其范围内，可能导致启动指令流云手机失败。

7. 确认指令流云手机是否启动成功，其中“${kbox_id}”为启动实例的编号。

```
# docker exec -it kbox_${kbox_id} sh
# getprop sys.boot_completed
# getprop vmi.agent.status
```


  如果回显信息中“getprop sys.boot_completed”显示为“1”，“getprop vmi.agent.status”显示为“true”则表示启动成功

8. 解压InstructionPhoneClientSmokeApk.tar.gz，在安卓手机上安装CloudGame_Smoke.apk，自上而下依次输入服务器IP地址、所启动实例的端口号（例如：8066，66是指令流云手机的实例编号），即可访问云侧的指令流云手机。
  安卓手机OS版本需要为Android 7.0及以上，不满足此条件无法安装云手机客户端。 请确保安卓手机和服务器之间网络畅通。
