docker: geçersiz başvuru biçimi


111

Bu öğreticiyi takip ediyorum: https://medium.com/towards-data-science/number-plate-detection-with-supervisely-and-tensorflow-part-1-e84c74d4382c

ve docker kullanıyorlar. Docker'ı çalıştırmayı denediğimde (run.sh betiğinin içinde):

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

Hatayı aldım:

docker: invalid reference format.

2 saat geçirdim ve sorunun ne olduğunu gerçekten anlayamıyorum. Herhangi bir fikir gerçekten takdir edildi.


3
Deneyindocker run -p 8888:8888 -v "`pwd`/../src":/src -v "`pwd`/../data":/data -w /src --rm -it supervisely_anpr bash
Tarun Lalwani

5
Gibi @TarunLalwani ve @Oleg taşımak gerekir söz --rmve -itarada runve görüntü adını. Yine de bu hata mesajını açıklamaz. Görüntü adı karakterlerinin herhangi bir özel kodlama veya büyük harf içermediğini kontrol ettiniz mi? Snippet'inizden Kopyala ve Yapıştır benim için çalışırken docker run --rm foo! bash, sizinkiyle aynı hatayı yazdırır.
gesellix

3
buna bir cevap göndermeyi düşünürsek, sıradaki adam için bulmak daha kolay
lloiacono

4
Dizeyi kelimelere gerçekten bölmek istemediğiniz sürece her zaman dolar genişletmelerini çift tırnak içine alın. Burada, kullanın "$(pwd)"(modern şekli "`pwd`"). Emriniz olur docker run -p 8888:8888 -v "$(pwd)"/../src:/src -v "$(pwd)"/../data:/data -w /src supervisely_anpr --rm -it bash.
Martin Jambon

1
@gesellix teşekkür ederim. Kılavuzlardan kopyalama-yapıştırma komutları yeni şeyler öğrenirken ilk etapta yapılmamalıdır, ayrıca bazı sinsi bozuk semboller işin içine girdiğinde beklenmedik bir acı getirebilir. İyi ki, böyle bir "hataya" iki saat veya yarım gün harcamadan önce yorumunuzu gördüm ^ _ ^
Den Drobiazko

Yanıtlar:


96

Powershell'de ${pwd}vs kullanmalısınız$(pwd)


7
Kafamı duvara
çarpmama

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 truebenim emrimde sorun ne? Aynı hatayı da veriyor.
paul

Çok teşekkür ederim!
Andrew Brennan

... ve sadece $pwdçalışmıyor, ki bu açık.
Timo

48

Bir bayrak için bir bayrak veya parametre olmayan "çalıştırma" dan sonraki ilk bağımsız değişken, bir görüntü adı olarak çözümlenir. Bu ayrıştırma başarısız olduğunda, size referans biçiminin, yani görüntü adının (ancak bir görüntü kimliği, sabitlenmiş görüntü veya başka bir sözdizimi olabilir) geçersiz olduğunu söyler. Emrinizde:

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

"Supervisely_anpr" görüntü adı geçerlidir, bu nedenle komutta daha önce bakmanız gerekir. Bu durumda, hata büyük olasılıkla pwdiçinde boşluk olan bir yolun çıktısının alınmasından kaynaklanır. Boşluktan sonraki her şey artık bir parametre değildir -vve docker bunu görüntü adı olarak ayrıştırmaya çalışır. Düzeltme, boşluk veya diğer özel karakterler içermediğini garanti edemediğinizde hacim parametrelerini alıntı yapmaktır.

Bunu yaptığınızda, bir sonraki "yürütülebilir dosya bulunamadı" hatasıyla karşılaşırsınız. Görüntü adından sonraki her şey, kapsayıcı içinde çalıştırılacak komut olarak ayrıştırılır. Sizin durumunuzda, görüntünüzün içinde ikili bir dosya olarak bulunmayacağından --rm -it bashneredeyse kesinlikle başarısız olacak komutu çalıştırmaya çalışacaktır --rm. Bunu çözmek için parametreleri yeniden sıralamanız gerekir:

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

Slaytlarımda bu iki hata ve neden hakkında daha fazla ayrıntı var: https://sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow-lightning.html#29


3
30. Slayt çözüldü sorunumu. Cygwin'de çalışan bir .sh dosyam vardı. Değiştim # !/bin/bash(haber arasındaki boşluk #ve !hiç #!/bin/bash ardından ve End of Line Sequencegelen CRLFiçin LF... Paylaşım slaytlar için Hepsi bu kadardı i did sayesinde @BMitch
blongho

16

copy-pastedKomut verdiğimde aynı sorunu yaşadım . Bunun yerine, tüm komutu yazdığımda işe yaradı!

İyi şanslar...


4
Vay canına, bu gerçekten yardımcı oldu.
Matjag

5
Evet, benim için düzenleyicinin otomatik olarak değiştirmesi nedeniyle --nameyapıştırıldı -. Teşekkürler, zamanımı kurtardın.
Rvy Pandey

8

Benzer bir problemim vardı. Yaşadığım sorun $(pwd), orada docker run off attığı bir boşluk olmasıydı.

Dizin adını orada boşluk olmayacak şekilde değiştirin ve sorun buysa çalışmalıdır.


4

Ortam değişkeni setim olmadığında bu sorunla karşılaştım.

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

repove image_nametanımlandı ama tagdeğildi.

Bu sonuçlandı docker push repo/image_name:.

Hangi attı docker: invalid reference format.


Aynı sorunu yaşadım ve eksik ortam değişkenini dışa aktarma etiketi = en son
PHZ.fi-Pharazon

docker buildbu hatayla benim için başarısız oldu FROM ${ORG}/ci-common:${CI_COMMON_VERSION} as builder. Her yerde bu yazım hatası olan başka bir komut dosyasından kopyaladığım ve bu nedenle iyi çalışıyor olan önceki basit bir yazım hatası ARG CI_COMMON_VERION=2(eksik bir S) nedeniyle ortaya çıktı .
CodeManX

1

Kullanmanın docker-compose configsorunun ne olduğunu bildirdiğini buldum.

Benim durumumda, hiçbir şeyi geçersiz kılan bir girişe sahip bir geçersiz kılma oluşturma dosyası .


0

Bu, üretimde aşağıdaki gibi geliştirme penceresini kullandığınızda da olur. Üretimde imajlar inşa etmek istemezsiniz, çünkü bu konteyner ideolojisini kırar. Görüntüleri dağıtmalıyız:

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

Bunu yerleşik görüntüyü kullanmak için değiştirin:

  web:
    command: /bin/bash run.sh
    image: registry.voxcloud.co.za:9000/dyndns_api_web:0.1
    ports:
      - "8000:8000"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.