docker:invalid reference format 原因及解决办法

  • Post author:
  • Post category:其他

本文只介绍生产环境中遇到的问题,为docker拉取、下载、推送镜像相关内容的问题,现根据情况列出解决办法之一!

  • 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值带有 ” 符号,但是查看

linevar是对应的镜像名没问题;

经排查后原因为:” ****.txt 的镜像文件是从windows里拉到linux中的,存在换行符\n 由于换行符在shell里是默认不显示的,为空格占位符 “,所以可直接复制windows文档中的所有内容到linux中,也可以使用 grep test ****.txt | tr ‘\n’ ’ ’ && cat ****.txt | grep test | tr ‘\n’ ’ ’ 使用 tr 来将\n 替换。
  • 将换行符替换后再次测试脚本可成功,如遇到其他情况可参考shell中识别变量的相关写法和命令修改,也存在符号大小写,字母大小写,中英文符号对应的问题;

版权声明:本文为lxy100202原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。