更新时间:2024-05-20 GMT+08:00

在Docker中配置和使用KooCLI

在Docker中配置和使用KooCLI,请遵循如下步骤(以创建Linux系统ubuntu发行版的Docker容器为例):

在按步骤执行之前,请确保您已经安装Docker。有关安装说明,请参阅 Docker 网站。可运行以下命令确认是否安装Docker:

docker --version

  1. 创建Dockerfile文件

    新建目录并在该目录下创建名为Dockerfile的纯文本文件,文件内容如下:

    FROM ubuntu:latest
    RUN apt-get update -y && apt-get install curl -y
    # 一键式安装KooCLI
    RUN curl -sSL https://ap-southeast-3-hwcloudcli.obs.ap-southeast-3.myhuaweicloud.com/cli/latest/hcloud_install.sh -o ./hcloud_install.sh && bash ./hcloud_install.sh -y
    WORKDIR hcloud

    Dockerfile文件名带有大写字母D,且没有文件扩展名,每个目录只能保存一个。

    hcloud_install.sh文件为一键式安装KooCLI的脚本文件,其对应的软件包校验文件为hcloud_install.sh.sha256

    可在上述Dockerfile文件中追加如下内容,指定启动容器时运行的程序为KooCLI:

    ENTRYPOINT ["/usr/local/bin/hcloud"]

    其后,以该文件构建的docker镜像所启动的容器仅支持执行单条KooCLI命令,详情见后文所示

  2. 构建镜像

    在此目录下运行以下命令来构建名为“hcloudcli”的Docker镜像:

    docker build --no-cache -t hcloudcli .

    ...

    命令末尾的“.”指在当前目录中构建Docker镜像,不可省略。

    在Dockerfile文件中追加“ENTRYPOINT ["/usr/local/bin/hcloud"]”时,在构建镜像时会有如下提示:

    镜像构建成功后使用以下命令查看构建的镜像:

    docker images

  3. 使用镜像

    • 用法一:基于“hcloudcli”镜像创建后台运行容器,并在容器中执行命令。
      docker run -it -d --name hcloudcli hcloudcli

      运行如下命令查看已启动的Docker容器:

      docker ps

      运行如下命令进入Docker容器,进入到容器后KooCLI的使用方式与直接在宿主机上使用相同:

      docker exec -it hcloudcli /bin/bash

      使用完成后,执行如下命令退出“hcloudcli”容器:

      exit

      要完全停止“hcloudcli”容器运行,可执行如下命令:

      docker stop hcloudcli
    • 用法二:基于“hcloudcli”镜像创建临时容器,并执行命令。
      1. 创建临时容器,并执行命令:
        docker run --rm -it hcloudcli ${command}
        • 使用未追加“ENTRYPOINT ["/usr/local/bin/hcloud"]”的Dockerfile创建的Docker镜像,在执行“docker run”命令时需指定运行的程序为“hcloud”。如下所示:

        • 使用追加了“ENTRYPOINT ["/usr/local/bin/hcloud"]”的Dockerfile创建的Docker镜像,则不需要指定运行程序。此时“docker run --rm -it hcloudcli”命令等效于在宿主机上直接执行“hcloud”命令。如下所示:

          使用追加了“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}

        示例2:通过将宿主机系统的目录/cli挂载到容器的当前目录下,将宿主机该目录下的“test.json”文件共享到容器:

        docker run --rm -it -v /root/.hcloud/:/root/.hcloud/ -v /cli:$(pwd) hcloudcli ${command}

      3. 创建临时容器,向容器共享宿主机环境变量(以Linux系统的宿主机为例),执行命令:

        通过“-e”标志共享宿主机的环境变量到容器中:

        docker run --rm -it -e ${envName} hcloudcli ${command}

    给命令起别名(以Linux系统的宿主机为例),以简化命令。以使用追加了“ENTRYPOINT ["/usr/local/bin/hcloud"]”的Dockerfile创建的Docker镜像为例,执行如下命令,给原命令起别名为“hcloud”:

    alias hcloud='docker run --rm -it hcloudcli'

    后续可使用别名执行原命令。如下所示:

  4. 更新镜像

    已构建的镜像,其中的KooCLI版本为镜像构建时的最新版本。若要保证镜像中使用最新版本,重新构建镜像即可。

  5. 卸载镜像

    执行如下命令卸载“hcloudcli”镜像:

    docker rmi hcloudcli