You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从GitLab部署至Azure容器注册表失败,报错'sh'未被识别

GitLab CI/CD流水线错误原因分析

问题场景

用户配置的GitLab CI/CD流水线代码如下:

# .gitlab-ci.yml

stages:
  - build
  - push

build:
  stage: build
  services:
    - docker:dind
  image: docker:latest
  script:
    # Build the Docker image
    - docker build -t myfe:$CI_COMMIT_SHA .

push:
  stage: push
  image: bitnami/azure-cli
  script:
#    - echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
    - echo $ACR_CLIENT_ID | docker login mycr.azurecr.io --username $ACR_CLIENT_ID --password-stdin
    # Push the Docker image to the ACR
    - docker push myfe:$CI_COMMIT_SHA
  only:
    - main
#  before_script:
#    - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
  variables:
    DOCKERHUB_USERNAME: $DOCKERHUB_USERNAME
    DOCKERHUB_PASSWORD: $DOCKERHUB_PASSWORD

执行流水线后触发错误:

Using docker image sha256:373... for bitnami/azure-cli with digest bitnami/azure-cli@sha256:9128... ...
ERROR: 'sh' is misspelled or not recognized by the system.
Examples from AI knowledge base:
https://aka.ms/cli_ref
Read more about the command in reference docs

错误原因

bitnami/azure-cli镜像的默认入口命令(ENTRYPOINT)被设置为az,而GitLab CI执行script代码时,默认会用sh -c的方式启动容器并执行脚本。这就导致容器将sh识别为az命令的子命令,但az并不存在名为sh的子命令,因此抛出了"'sh' is misspelled or not recognized"的错误。

此外,该镜像本身未预装docker命令,即便解决入口问题,后续执行docker login、docker push等操作也会失败。

修复建议

  • 更换镜像:选择包含docker命令且默认入口为Shell的镜像,比如docker:latest(需搭配docker:dind服务),或者使用集成了azure-cli和docker工具的自定义镜像。
  • 调整现有镜像配置:若坚持使用bitnami/azure-cli镜像,需手动覆盖镜像的ENTRYPOINT,让容器以Shell启动,并额外安装docker工具:
    push:
      stage: push
      image: bitnami/azure-cli
      entrypoint: ["sh", "-c"]
      script:
        - apt-get update && apt-get install -y docker.io
        - echo $ACR_CLIENT_ID | docker login mycr.azurecr.io --username $ACR_CLIENT_ID --password-stdin
        - docker push myfe:$CI_COMMIT_SHA
      only:
        - main
    

内容的提问来源于stack exchange,提问作者Karel Macek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:40:25