
# 在Docker中配置和使用KooCLI
在Docker中配置和使用KooCLI，请遵循如下步骤（以创建Linux系统ubuntu发行版的Docker容器为例）：
在按步骤执行之前，请确保您已经安装Docker。有关安装说明，请参阅 [Docker 网站](https://docs.docker.com/install/)。可运行以下命令确认是否安装Docker：
```
docker --version
```
![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001183309612.jpg "点击放大")
1. 创建Dockerfile文件 
   新建目录并在该目录下创建名为Dockerfile的纯文本文件，文件内容如下：
   ```
   FROM ubuntu:latest
   RUN apt-get update -y && apt-get install curl -y
   # 一键式安装KooCLI
   RUN curl -sSL https://cn-north-4-hdn-koocli.obs.cn-north-4.myhuaweicloud.com/cli/latest/hcloud_install.sh -o ./hcloud_install.sh && bash ./hcloud_install.sh -y
   WORKDIR hcloud
   ```
   ![](https://support.huaweicloud.com/qs-hcli/public_sys-resources/note_3.0-zh-cn.png)
   Dockerfile文件名带有大写字母D，且没有文件扩展名，每个目录只能保存一个。
   hcloud_install.sh文件为一键式安装KooCLI的脚本文件，其对应的软件包校验文件为[hcloud_install.sh.sha256](https://cn-north-4-hdn-koocli.obs.cn-north-4.myhuaweicloud.com/cli/latest/hcloud_install.sh.sha256)
   可在上述Dockerfile文件中追加如下内容，指定启动容器时运行的程序为KooCLI：
   ```
   ENTRYPOINT ["/usr/local/bin/hcloud"]
   ```
   其后，以该文件构建的docker镜像所启动的容器仅支持执行单条KooCLI命令，[详情见后文所示]。
   
   
2. 构建镜像
   
   在此目录下运行以下命令来构建名为"hcloudcli"的Docker镜像：
   ```
   docker build --no-cache -t hcloudcli .
   ```
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001525934465.png "点击放大")
   ...
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001551368444.png "点击放大")
   ![](https://support.huaweicloud.com/qs-hcli/public_sys-resources/note_3.0-zh-cn.png)
   命令末尾的"."指在当前目录中构建Docker镜像，不可省略。
   在Dockerfile文件中追加"ENTRYPOINT \["/usr/local/bin/hcloud"\]"时，在构建镜像时会有如下提示：
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001602163253.png "点击放大")
   镜像构建成功后使用以下命令查看构建的镜像：
   ```
   docker images
   ```
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001183152140.jpg "点击放大")
   
   
3. 使用镜像 
   - 用法一：基于"hcloudcli"镜像创建后台运行容器，并在容器中执行命令。
     ```
     docker run -it -d --name hcloudcli hcloudcli
     ```
     ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001182992340.jpg "点击放大")
     运行如下命令查看已启动的Docker容器：
     ```
     docker ps
     ```
     ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001228512189.jpg "点击放大")
     运行如下命令进入Docker容器，进入到容器后KooCLI的使用方式与直接在宿主机上使用相同：
     ```
     docker exec -it hcloudcli /bin/bash
     ```
     ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001499095085.png "点击放大")
     使用完成后，执行如下命令退出"hcloudcli"容器：
     ```
     exit
     ```
     要完全停止"hcloudcli"容器运行，可执行如下命令：
     ```
     docker stop hcloudcli
     ```
     
   
   - 用法二：基于"hcloudcli"镜像创建临时容器，并执行命令。
     1. 创建临时容器，并执行命令：
        ```
        docker run --rm -it hcloudcli ${command}
        ```
        - 使用未追加"ENTRYPOINT \["/usr/local/bin/hcloud"\]"的Dockerfile创建的Docker镜像，在执行"docker run"命令时需指定运行的程序为"hcloud"。如下所示： ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001449694438.png "点击放大")
          
        
        
        
        - 使用追加了"ENTRYPOINT \["/usr/local/bin/hcloud"\]"的Dockerfile创建的Docker镜像，则不需要指定运行程序。此时"docker run --rm -it hcloudcli"命令等效于在宿主机上直接执行"hcloud"命令。如下所示：
          ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001449693662.png "点击放大")
          ![](https://support.huaweicloud.com/qs-hcli/public_sys-resources/note_3.0-zh-cn.png)
          使用追加了"ENTRYPOINT \["/usr/local/bin/hcloud"\]"的Dockerfile创建的Docker镜像，执行"docker run"时仅支持KooCLI相关命令。
          
         
     
     2. 创建临时容器，向容器共享宿主机文件（以Linux系统的宿主机为例），并执行命令： 通过宿主机系统目录和容器目录的挂载，将宿主机文件共享到容器：
        示例1：通过将宿主机系统的/root/.hcloud/目录挂载到容器的/root/.hcloud/目录下，将宿主机配置文件共享到容器：
        ```
        docker run --rm -it -v /root/.hcloud/:/root/.hcloud/ hcloudcli ${command}
        ```
        
        ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001525320141.png "点击放大")
        示例2：通过将宿主机系统的目录/cli挂载到容器的当前目录下，将宿主机该目录下的"test.json"文件共享到容器：
        ```
        docker run --rm -it -v /root/.hcloud/:/root/.hcloud/ -v /cli:$(pwd) hcloudcli ${command}
        ```
        ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001342658757.png "点击放大")
        
     
     3. 创建临时容器，向容器共享宿主机环境变量（以Linux系统的宿主机为例），执行命令： 通过"-e"标志共享宿主机的环境变量到容器中：
        ```
        docker run --rm -it -e ${envName} hcloudcli ${command}
        ```
        
      
   
   
   ![](https://support.huaweicloud.com/qs-hcli/public_sys-resources/note_3.0-zh-cn.png)
   给命令起别名（以Linux系统的宿主机为例），以简化命令。以使用追加了"ENTRYPOINT \["/usr/local/bin/hcloud"\]"的Dockerfile创建的Docker镜像为例，执行如下命令，给原命令起别名为"hcloud"：
   ```
   alias hcloud='docker run --rm -it hcloudcli'
   ```
   后续可使用别名执行原命令。如下所示：
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001342379861.png "点击放大")
   
   
4. 更新镜像 
   已构建的镜像，其中的KooCLI版本为镜像构建时的最新版本。若要保证镜像中使用最新版本，重新[构建镜像]即可。
   
   
5. 卸载镜像 
   执行如下命令卸载"hcloudcli"镜像：
   ```
   docker rmi hcloudcli
   ```
   ![](https://support.huaweicloud.com/qs-hcli/zh-cn_image_0000001228517097.jpg "点击放大")
   
   
 
