Docker传递含等号环境变量时触发无效引用格式错误求助
解决Docker Run传递含等号环境变量时的"invalid reference format"错误
我一眼就看出问题所在了——你的Docker命令格式写错了!
你在传递第二个环境变量APP_DB_PASSWORD的时候,没有加上--env(或者简写-e)参数,这就导致Docker把APP_DB_PASSWORD=gAAAAABhRil3bGI9o_nCmMEf6oJ3cBuMD6y9to6GX05apQp2GO3GPkxrmeOLBfzeKNPPsp_P8vX2tma3EUEM7m5DuI94K84riA==当成了镜像名称来解析。而镜像名称要求全小写,这里的APP_DB_PASSWORD有大写字母,所以触发了docker: invalid reference format: repository name must be lowercase这个错误。和环境变量里的等号其实没关系,等号本身是环境变量键值对的合法分隔符。
正确的命令写法
你需要给每个环境变量都单独加上--env参数,正确的命令应该是这样的:
docker run --env FERNET_KEY=Jo9HlTULeWylXz39Q25v9cqsHx4_7ZDAHlsQPuJiiHY= --env APP_DB_PASSWORD=gAAAAABhRil3bGI9o_nCmMEf6oJ3cBuMD6y9to6GX05apQp2GO3GPkxrmeOLBfzeKNPPsp_P8vX2tma3EUEM7m5DuI94K84riA== localhost:5000/app-name_app-name
或者用更简洁的-e简写参数:
docker run -e FERNET_KEY=Jo9HlTULeWylXz39Q25v9cqsHx4_7ZDAHlsQPuJiiHY= -e APP_DB_PASSWORD=gAAAAABhRil3bGI9o_nCmMEf6oJ3cBuMD6y9to6GX05apQp2GO3GPkxrmeOLBfzeKNPPsp_P8vX2tma3EUEM7m5DuI94K84riA== localhost:5000/app-name_app-name
额外注意事项
- 每个环境变量都需要单独用
--env/-e声明,不能把多个键值对堆在同一个参数后面 - 如果环境变量值里包含空格、引号这类特殊字符,记得用单引号或双引号把值括起来,比如:
-e MY_VAR="hello world" - Docker对镜像名称的大小写要求很严格,必须全小写,哪怕是私有仓库的镜像也不能违反这个规则
内容的提问来源于stack exchange,提问作者vector8188




