【问题标题】:Azure CLI in a Docker ContainerDocker 容器中的 Azure CLI
【发布时间】:2020-09-13 17:59:13
【问题描述】:

我有一个需要安装 Azure CLI 的 Ubuntu 18.04 Docker 映像。对于 Docker 映像,似乎首选方法是使用 pip,但是,我在容器中需要其他 pip Azure 库与由于 Azure CLI 需要旧版本,因此 CLI 安装并被吹走;然后使它无法运行我的python脚本。

我曾尝试使用script installer,但由于我相信安装是交互式的,因此没有成功并出错。

我能找到的最后一个选项是manual apt install,尽管我不确定这是正确的方法,也不知道如何在Dockerfile 中复制它。

在不使用pip 的容器中获取 Azure CLI 是否有首选/好的方法?

    FROM ubuntu:18.04

    RUN apt-get update && apt-get -y upgrade && \
        apt-get -f -y install curl python3-pip python-pip && \
        pip3 install --upgrade pip && \
        pip2 install --upgrade pip && \
        pip3 install azure-storage-blob==12.3.0 & \\
        pip3 install azure-cli

【问题讨论】:

  • 您能分享您当前的 Dockerimage(至少是运行 apt-getFROMRUN 命令吗?
  • @jmaitrehenry 当然。我用我的 Dockerfile 的 from 和 run 更新了它。我使用 pip2 和 pip3 来安装东西的原因是因为我遇到了同样的问题,包在 ansible 和 storage-blob 库中相互交叉。现在添加 Azure cli,我无法像使用 Ansible azure 包那样将其附加到 pip2 或 3 来解决它。这就是为什么我试图找到安装 Azure cli 的替代方法,以避免它干扰 pip 包

标签: python-3.x azure docker pip dockerfile


【解决方案1】:

我倾向于使用包管理器来安装依赖项,这就是为什么我会这样做:

  • 为 https 存储库和 curl 添加基本依赖项
  • 为 CLI 添加 gpg 密钥和存储库
  • 添加 CLI

这是包含这些步骤的 Dockerfile:

FROM ubuntu:18.04
RUN apt-get update && apt-get -y upgrade && \
    apt-get -f -y install curl apt-transport-https lsb-release gnupg python3-pip python-pip && \
    curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.asc.gpg && \
    CLI_REPO=$(lsb_release -cs) && \
    echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ ${CLI_REPO} main" \
    > /etc/apt/sources.list.d/azure-cli.list && \
    apt-get update && \
    apt-get install -y azure-cli && \
    rm -rf /var/lib/apt/lists/*

此外,我通过删除 /var/lib/apt/lists 来清理 apt 缓存。 Tt 减小了图像大小,因为 apt 缓存没有存储在层中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多