Estou seguindo este tutorial: https://medium.com/towards-data-science/number-plate-detection-with-supervisely-and-tensorflow-part-1-e84c74d4382c
e eles usam o docker. Quando tentei executar o docker (dentro do script run.sh):
docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash
Eu entendi o erro:
docker: invalid reference format.
Passei 2 horas e não consigo entender o que há de errado. Qualquer ideia realmente apreciada.
docker run -p 8888:8888 -v "`pwd`/../src":/src -v "`pwd`/../data":/data -w /src --rm -it supervisely_anpr bash
--rm
e-it
entrerun
e o nome da imagem. Isso não explica a mensagem de erro, no entanto. Você verificou se os caracteres do nome da imagem não têm codificação especial ou maiúsculas? Copiar e colar do seu snippet funciona para mim, enquantodocker run --rm foo! bash
imprime o mesmo erro como o seu."$(pwd)"
(forma moderna de"`pwd`"
). Seu comando se tornadocker run -p 8888:8888 -v "$(pwd)"/../src:/src -v "$(pwd)"/../data:/data -w /src supervisely_anpr --rm -it bash
.Respostas:
No PowerShell você deve usar
${pwd}
vs$(pwd)
fonte
docker run --rm -ti --name zalenium -p 4444:4444 -p 5555:5555 \ -e SAUCE_USERNAME -e SAUCE_ACCESS_KEY \ -v /tmp/videos:/home/seluser/videos \ -v /var/run/docker.sock:/var/run/docker.sock \ dosel/zalenium start --sauceLabsEnabled true
o que há de errado com meu comando? Também está dando mesmo erro.O primeiro argumento após a "execução" que não é um sinalizador ou parâmetro para um sinalizador é analisado como um nome de imagem. Quando essa análise falha, ele informa que o formato de referência, também conhecido como nome da imagem (mas pode ser um id de imagem, imagem fixada ou outra sintaxe), é inválido. Em seu comando:
O nome da imagem "supervisely_anpr" é válido, então você precisa olhar antes no comando. Nesse caso, o erro provavelmente é
pwd
causado pela saída de um caminho com um espaço. Tudo o que vem depois do espaço não é mais um parâmetro para-v
e o docker tenta analisá-lo como o nome da imagem. A correção é citar os parâmetros de volume quando você não pode garantir que não haja espaços ou outros caracteres especiais.Ao fazer isso, você encontrará o próximo erro, "executável não encontrado". Tudo após o nome da imagem é analisado como o comando a ser executado dentro do contêiner. No seu caso, ele tentará executar o comando
--rm -it bash
que quase certamente falhará, pois--rm
não existirá como um binário dentro de sua imagem. Você precisa reordenar os parâmetros para resolver isso:Tenho mais alguns detalhes sobre esses dois erros e causas em meus slides aqui: https://sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow-lightning.html#29
fonte
# !/bin/bash
(observe o espaço entre#
e!
para#!/bin/bash
e depoisEnd of Line Sequence
deCRLF
paraLF
. Foi tudo o que fiz. Obrigado @BMitch por compartilhar os slides.Eu tive o mesmo problema quando eu
copy-pasted
o comando. Em vez disso, quando digitei o comando inteiro, funcionou!Boa sorte...
fonte
--name
colado-
devido à alteração automática do editor. Obrigado, você economizou meu tempo.Eu tive um problema parecido. O problema que eu estava tendo era que
$(pwd)
havia um espaço que estava jogando o docker para fora.fonte
Eu tive esse problema quando não tinha uma variável de ambiente definida.
repo
eimage_name
foram definidos, mastag
não foram.Isso resultou em
docker push repo/image_name:
.Que jogou o
docker: invalid reference format.
fonte
Descobriu que usando
docker-compose config
relatou qual era o problema.No meu caso, um arquivo de composição de substituição com uma entrada que não substituía nada .
fonte
Isso também acontece quando você usa a composição do docker de desenvolvimento, como a seguir, na produção. Você não quer construir imagens em produção, pois isso quebra a ideologia dos contêineres. Devemos implantar imagens:
Altere isso para usar a imagem construída:
fonte