[英]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.