繁体   English   中英

docker pull - Azure DevOps 中的参考格式无效

[英]docker pull - invalid reference format in Azure DevOps

我正在尝试以动态方式在我的管道中提取图像。 我有一个名为“images.txt”的文件,其中包含:

(cat images.txt 会返回)

 cat images.txt
    python:3.8-slim
    neo4j

在 azure 管道中拉取图像的方法是:

该代码有效,但不是动态的:

steps:
   - bash: |
         y='python:3.8-slim' 
         docker pull ${y}

    displayName: "Docker pull"

在 azure 管道中,我这样做:

 - bash: |
    #x='python:3.8-slim'
    filename='images.txt'
    n=1
    while read line; do
       echo "pulling image"
       echo ${line}
       n=$((n+1))
       docker pull ${line}
   done < $filename

取而代之的是 docker pull ${line}我尝试了各种替代方法,但没有任何效果。我总是收到错误“无效的参考格式”我试过:

     #eval docker pull "$line"
     #eval docker pull $line
     #eval docker pull $line
     #eval docker pull "$line"
     #eval docker pull "\${line}"
     #docker pull "\${line}"
     #docker pull $line
     #docker pull "$line"
     #docker pull $(line)

任何想法都将不胜感激

更新:为@Paul Rey 提供的代码

 filename='images.txt'
 n=1
 echo "docker pull"
 for line in $(cat ${filename}); 
 do
   echo ${line}
   docker pull ${line}
 done

它在图像没有标签时工作,因此图像: neo4j 成功拉出,但使用 python:3.8-slim 我收到“无效参考格式”的错误在此处输入图像描述

我认为docker pull ${line}是正确的。 但是你能确保images.txt格式正确吗? 我的意思是,看起来每行都有额外的空格。 也许也有结束行字符。

如果每行只有一个单词,则可以选择循环:

for line in $(cat ${filename}); do
    docker pull ${line}
done

我有一个类似的问题,我意识到当我从 txt bash 读取时添加了一个额外的空白:想象你在你的 images.txt python:3.8-slim

你可以像这样检查它:

filename='images.txt'
n=1
y=python:3.8-slim
for line in $(cat ${filename}); 
do
 z=${line}
 echo $z
 echo $y
 echo -n "$z" | wc -c
 echo -n "$y" | wc -c  
done

如果 z 和 y 中的字符不同,您可以删除空格,这样:

filename='images.txt'
n=1
#echo "docker pull"
for line in $(cat ${filename}); 
do
  #echo ${line}
  y=${line//[[:space:]]/}
  echo $y
  docker pull ${y}
done 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM