docker : invalid reference format

Docker

Docker Problem Overview


I'm following this tutorial that uses Docker. When I tried to run Docker (inside the run.sh script):

docker run \
    -p 8888:8888 
    -v `pwd`/../src:/src \
    -v `pwd`/../data:/data -w /src supervisely_anpr \
    --rm \
    -it \
    bash

I got the error:

docker: invalid reference format.

I spent 2 hours and I can't really understand what's wrong. Any idea really appreciated.

Docker Solutions


Solution 1 - Docker

In powershell you should use ${pwd} instead of $(pwd)

Solution 2 - Docker

The first argument after the "run" that is not a flag or parameter to a flag is parsed as an image name. When that parsing fails, it tells you the reference format, aka image name (but could be an image id, pinned image, or other syntax) is invalid. In your command:

 docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash

The image name "supervisely_anpr" is valid, so you need to look earlier in the command. In this case, the error is most likely from pwd outputting a path with a space in it. Everything after the space is no longer a parameter to -v and docker tries to parse it as the image name. The fix is to quote the volume parameters when you cannot guarantee it is free of spaces or other special characters.

When you do that, you'll encounter the next error, "executable not found". Everything after the image name is parsed as the command to run inside the container. In your case, it will try to run the command --rm -it bash which will almost certainly fail since --rm will no exist as a binary inside your image. You need to reorder the parameters to resolve that:

 docker run --rm -it -p 8888:8888 -v "`pwd`/../src:/src" -v "`pwd`/../data:/data" -w /src supervisely_anpr  bash

I've got some more details on these two errors and causes in my slides here: https://sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow-lightning.html#29

Solution 3 - Docker

I had the same issue when I copy-pasted the command. Instead, when I typed-in the entire command, it worked!

Good Luck...

Solution 4 - Docker

I had a similar problem. Issue I was having was $(pwd) has a space in there which was throwing docker run off. > Change the directory name to not have spaces in there, and it should work if this is the problem

Solution 5 - Docker

I ran into this issue when I didn't have an environment variable set.

docker push ${repo}${image_name}:${tag}

repo and image_name were defined but tag wasn't.

This resulted in docker push repo/image_name:.

Which threw the docker: invalid reference format.

Solution 6 - Docker

I was having the same problem on Linux. That was because of directory names contained spaces. I fixed it by using "$(pwd)/path/to/go" instead of $(pwd)/path/to/go

Solution 7 - Docker

For others come here:
If you happen to put your docker command in a file, say run.sh, check your line separator. In Linux, it should be LR, otherwise you would get the same error.

Solution 8 - Docker

I was executing the whole command in one line, as it was mentioned as such

$ docker run --name testproject-agent \
-e TP_API_KEY="REPLACE_WITH_YOUR_KEY" \
-e TP_AGENT_ALIAS="My First Agent" \
testproject/agent:latest

But its supposed to be a multiline command, and I copied the command line by line and pressed enter after every line and bam! it worked.

Sometimes when you copy off of the web, the new-line character gets omitted, hence my suggestion to try manually introducing the new line.

Solution 9 - Docker

This also happens when you use development docker compose like the below, in production. You don't want to be building images in production as that breaks the ideology of containers. We should be deploying images:

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"

Change that to use the built image:

  web:
    command: /bin/bash run.sh
    image: registry.voxcloud.co.za:9000/dyndns_api_web:0.1
    ports:
      - "8000:8000"

Solution 10 - Docker

Found that using docker-compose config reported what the problem was.

In my case, an override compose file with an entry that was overriding nothing.

Solution 11 - Docker

I removed () and worked for me like this docker run -d -v $pwd/envoy.yaml:/etc/envoy/envoy.yaml:ro -p 8080:8080 -p 9901:9901 I am using windows 10

Solution 12 - Docker

I was using a very generic command

docker build .

It turned out that I needed to just specify the tag name otherwise there was no name to use

docker build . -t image_name

And then it worked.

Solution 13 - Docker

I was getting the same issue while using $(pwd) through powershell, I replaced it with ${pwd} and it worked for me.

Following are the details for the same:

PS C:\Users\Systems\git\mastery\dockerfile> docker container run -d --name nginx -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx
docker: invalid reference format.
See 'docker run --help'.

PS C:\Users\Systems\git\mastery\dockerfile> docker container run -d --name nginx -p 8080:80 -v ${pwd}:/usr/share/nginx/html nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:25975292693bcc062becc20a1608936927f9950a42fb4474088f6292dacd4ec9
Status: Downloaded newer image for nginx:latest
f6ff08ed3b73095e85474bd2f248a7cae6b5bcdb53e12e4824d235df3cd268aa

Solution 14 - Docker

In my case the problem is in the full path to folder with repo where I use terminal & docker. I was something like this: repo (1)/repo/ so rename folder to repo/repo and it will help

Solution 15 - Docker

In my case, the command was like this

 docker run -d --name kong-database \
  --network=kong-net \
  -p 5432:5432 \
  -e "POSTGRES_USER=kong" \
  -e "POSTGRES_DB=kong" \
  -e "POSTGRES_PASSWORD=kongpass" \
  postgres:9.6

I was trying to copy everything in a single line including slash (\) and was getting the following error

docker: invalid reference format.

The slash (\) in the command indicates the next line, so if you are trying to run the complete command in a single line just remove the slash (\), it worked for me

Thanks :)

Solution 16 - Docker

One of the problems I had is that in my configs of skaffold config list -a, my default-repo was set to https://docker-registry.url.com as seen below:

kubeContexts:
- kube-context: minikube
  default-repo: https://docker-registry.url.com

but instead, the correct way should have been without https://:

kubeContexts:
- kube-context: minikube
  default-repo: docker-registry.url.com

Solution 17 - Docker

Run it on CMD instead of PowerShell if you are using Windows.

Solution 18 - Docker

In case anyone else hits it, yet another variant that results in this error is caused by a trailing / or \ on your path specification.

i.e. -v c:\mystuff:c:\mappedfolder works

but: -v c:\mystuff\:c:\mappedfolder does not

Where there is the extra "\" at the end of mystuff

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionai2016View Question on Stackoverflow
Solution 1 - DockerLevon PetrosyanView Answer on Stackoverflow
Solution 2 - DockerBMitchView Answer on Stackoverflow
Solution 3 - DockerAakashView Answer on Stackoverflow
Solution 4 - Dockeryashvier kosarajuView Answer on Stackoverflow
Solution 5 - DockerbrandonbanksView Answer on Stackoverflow
Solution 6 - DockerYash RathiView Answer on Stackoverflow
Solution 7 - DockerSeanView Answer on Stackoverflow
Solution 8 - DockerMohd Abdul MujibView Answer on Stackoverflow
Solution 9 - DockertreadView Answer on Stackoverflow
Solution 10 - Dockeruser12272112View Answer on Stackoverflow
Solution 11 - DockerAkif KaraView Answer on Stackoverflow
Solution 12 - DockerCameronView Answer on Stackoverflow
Solution 13 - DockerHanamant JadhavView Answer on Stackoverflow
Solution 14 - DockerYauheni LeaniukView Answer on Stackoverflow
Solution 15 - DockerPradeep YenkuwaleView Answer on Stackoverflow
Solution 16 - DockeraksView Answer on Stackoverflow
Solution 17 - Dockerlioune SrView Answer on Stackoverflow
Solution 18 - DockerSteveView Answer on Stackoverflow