我正在遵循使用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.

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


当前回答

我在Linux上也遇到了同样的问题。这是因为目录名中包含空格。我通过使用“$(pwd)/path/to/go”而不是$(pwd)/path/to/go来修复它

其他回答

删除\并不断地写入命令。

像这样写

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

而不是

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

其他人来这里: 如果您碰巧将docker命令放在一个文件中,例如run.sh,请检查行分隔符。在Linux中,它应该是LR,否则您将得到相同的错误。

如果您使用的是Windows,在CMD而不是PowerShell上运行它。

如果你在windows PowerShell中运行脚本,你需要用花括号将$(pwd)替换为${pwd}。

当您在生产中使用开发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"