我正在遵循使用Docker的本教程。当我试图运行Docker(在run.sh脚本中):

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

我得到了错误:

docker: invalid reference format.

我花了两个小时,我真的不明白哪里出了问题。任何想法都非常感谢。


当前回答

我也遇到过类似的问题。 我遇到的问题是$(pwd)有一个空间在那里抛出码头运行。

将目录名更改为不包含空格,如果这是问题所在,它应该可以工作

其他回答

另一种可能出现这种情况的情况是当您缺少要运行的映像时。

我在一行中执行了整个命令,正如上面提到的那样

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

但它应该是一个多行命令,我一行一行地复制命令行,并在每一行之后按enter键,砰!它工作。

有时当你复制网页时,新行字符会被省略,因此我建议尝试手动引入新行。

当您在生产中使用开发docker组合时,也会发生这种情况。您不希望在生产环境中构建映像,因为这会破坏容器的意识形态。我们应该部署图像:

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

更改为使用构建的映像:

  web:
    command: /bin/bash run.sh
    image: registry.example.com:9000/dyndns_api_web:0.1
    ports:
      - "8000:8000"

在我的例子中,命令是这样的

 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

我试图在一行中复制所有内容,包括斜杠(\),并得到以下错误

docker: invalid reference format.

命令中的斜杠(\)表示下一行,因此如果您试图在一行中运行完整的命令,只需删除斜杠(\),这对我来说是可行的

谢谢:)

我删除了()并像这样为我工作 Docker运行-d -v $pwd/envoy.yaml:/etc/envoy/envoy。Yaml:ro -p 8080:8080 -p 9901:9901 我用的是windows 10