Azure CLI in a Docker Container



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

我尝试使用脚本安装程序,但这不起作用并且出错,因为我相信安装是交互式的。

我能找到的最后一个选项是手动 apt 安装,尽管我不确定这是一种正确的方法,也不知道如何在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

我更喜欢使用包管理器来安装依赖项,这就是为什么我会做这样的事情:

  • 为 https 存储库和 curl 添加基本依赖项
  • 为 CLI 添加 gpg 密钥和存储库
  • 添加命令行界面

这是包含这些步骤的 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 缓存不存储在图层中。

参见:https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt#option-1-install-with-one-command

RUN curl -LsS https://aka.ms/InstallAzureCLIDeb | bash && rm -rf /var/lib/apt/lists/*

最新更新