Docker Invalide Reference Format

Docker Invalide Reference Format



Kapag nagtatrabaho sa mga larawan ng Docker o Dockerfile, maaari kang makatagpo ng error na 'di-wastong format ng sanggunian'.

Sa tutorial na ito, malalaman natin kung ano ang ibig sabihin ng error na ito, bakit ito nangyayari, at kung paano mo ito mareresolba sa iyong paggamit ng Docker.

Ano ang isang Sanggunian ng Larawan sa Docker?

Sa Docker, ang isang sanggunian ng imahe ay tumutukoy sa isang paraan ng pagtukoy at paghahanap ng isang partikular na imahe ng Docker sa loob ng rehistro ng Docker (Docker Hub) o ng lokal na host ng Docker.







Bilang default, ang sanggunian ng larawan ay binubuo ng dalawang pangunahing bahagi:



Imbakan - Tinutukoy ng unang bahagi ang imbakan para sa target na imahe. Ito ang pinakamataas na antas ng unit ng organisasyon para sa Docker image, pangunahing ginagamit upang kumatawan sa organisasyon o sa indibidwal na namamahala sa larawan. Halimbawa, makakahanap ka ng larawang pinangalanang Microsoft/SQL-server. Sa kasong ito, ang unang bahagi ay kumakatawan sa organisasyong nagpapanatili ng imahe.



Tag – Ang pangalawang bahagi ng isang larawan ay isang label na nauugnay sa partikular na bersyon o variant ng larawan sa loob ng repositoryo. Ang mga tag ng larawan ay maaaring kumatawan sa iba't ibang bersyon ng parehong larawan, iba't ibang release, o iba't ibang compatibility. Halimbawa, sa larawan ng nginx:latest kung saan ang pinakabagong tag ay tumutukoy sa pinakabagong bersyon ng Nginx image.





Kapag tinukoy ang imahe sa alinman sa isang Dockerfile o docker na utos, dapat sundin ng pangalan ng imahe ang sumusunod na mga panuntunan sa pagbibigay ng pangalan:

  • Ang pangalan ng imbakan ay dapat na maliit.
  • Ang repository ay maaari ding maglaman ng mga titik, numero, gitling (-), underscore (_), o forward slash (/) upang ipahiwatig ang organisasyon o pagpapangkat sa loob ng isang registry.
  • Walang mga whitespace na character (mga puwang o tab) ang dapat nasa pangalan ng larawan.

Di-wastong Format ng Sanggunian ng Docker

Kapag nakuha mo ang error na 'invalid reference format' kapag pinapatakbo ang Dockerfile o Docker command, nangangahulugan ito na hindi sumunod ang iyong pangalan sa mga panuntunan sa itaas.



Ang isang halimbawa ay tulad ng ipinapakita:

$ docker pull BusyBox

Kung patakbuhin namin ang utos sa itaas, magbabalik ito ng isang error tulad ng ipinapakita:

hindi wasto sanggunian format: dapat na lowercase ang pangalan ng repository

Sa kasong ito, sinasabi nito sa amin na ang format ng pangalan ng larawan ay hindi tama, dahil ang pangalan ng larawan ay dapat palaging maliit na titik.

Paano Ayusin ang Docker Invalid Reference Format Error

Tulad ng maaari mong hulaan, ang unang paraan ay ang pagtiyak na ang format ng sanggunian ng imahe ay tama. Kabilang dito ang pag-verify na wasto ang pangalan ng larawan.

Halimbawa, sa utos sa itaas, maaari naming ayusin ang error sa pamamagitan ng pagtukoy sa pangalan ng imahe bilang:

$ sudo docker pull busybox:pinakabago

Sa kasong ito, dapat hilahin ng command ang pinakabagong bersyon ng imaheng Busybox.

Paraan 2 – Hatiin ang Mahabang Docker Command

Sa ilang iba pang mga kaso, maaari kang makatagpo ng error na 'invalid reference format' kapag nagpapatakbo ng mahabang Docker command.

Sa ganoong kaso, ang paghahati ng command sa maraming linya ay magandang kasanayan. Ang paraan ng command splitting ay depende sa iyong shell at system.

  • Gayunpaman, para sa Bash shell, gamitin ang multiline escape character o backslash (\).
  • Para sa PowerShell, maaari mong gamitin ang backtick na character (`).
  • Panghuli, kung nasa Command Prompt ka, maaari kang gumamit ng character na caret bilang ^

Halimbawa, sa Bash, patakbuhin ang command bilang:

$ sudo build ng docker \

-ito \

busybox \

sh

Sa PowerShell, maaari mong patakbuhin ang command tulad ng ipinapakita:

$ sudo pagtatayo ng docker `

-ito `

busybox `

sh

At panghuli, kung ikaw ay nasa Command Prompt, gamitin ang command tulad ng ipinapakita:

$ sudo build ng docker ^

-ito ^

busybox ^

sh

Paraan 3 – ${pwd} AT $(pwd) na landas

Ang isa pang karaniwang dahilan ng error na ito ay kapag ginagamit ang variable na ${pwd}. Ito ay maaaring magdulot ng salungatan, depende sa uri ng shell kung saan mo isinasagawa ang nasabing utos.

Sa kaso ng PowerShell, kailangan mong gamitin ang variable na ${pwd} sa halip na $(pwd).

Tulad ng maaari mong hulaan, sa kaso ng Bash, gamitin ang format ng panaklong sa halip na ang curly-braced input bilang $(pwd).

Konklusyon

Tinalakay ng post na ito ang mga nangungunang sanhi ng 'di-wastong format ng sanggunian' kapag nagtatrabaho sa mga utos ng Dockerfile o docker. Nag-explore din kami ng tatlong pangunahing paraan na magagamit mo para ayusin ang isyung ito.