本文只介绍生产环境中遇到的问题,为docker拉取、下载、推送镜像相关内容的问题,现根据情况列出解决办法之一!文章来源:https://www.toymoban.com/news/detail-579709.html
- shell脚本中定义变量给docker,出现invalid reference format
demo.sh
#!/bin/bash
var='cat /data/test/***.txt | grep test'
for line in $var
do
echo "已查到相关镜像,即将拉取~"
echo "准备拉取:"$var
docker pull $line
done
[上面脚本仅为提供测试,该脚本中在执行到docker pull的过程中会报错invalid reference format];在命令行执行docker pull *****.镜像 可以成功,在脚本中不行,sh -x 查看后 发现 变量传过来的 l i n e 值 带 有 ′ ′ 符 号 , 但 是 查 看 line值带有 '' 符号,但是查看 line值带有′′符号,但是查看var是对应的镜像名没问题;文章来源地址https://www.toymoban.com/news/detail-579709.html
经排查后原因为:” ****.txt 的镜像文件是从windows里拉到linux中的,存在换行符\n 由于换行符在shell里是默认不显示的,为空格占位符 “,所以可直接复制windows文档中的所有内容到linux中,也可以使用 grep test ****.txt | tr ‘\n’ ’ ’ && cat ****.txt | grep test | tr ‘\n’ ’ ’ 使用 tr 来将\n 替换。
- 将换行符替换后再次测试脚本可成功,如遇到其他情况可参考shell中识别变量的相关写法和命令修改,也存在符号大小写,字母大小写,中英文符号对应的问题;
到了这里,关于docker:invalid reference format 原因及解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!