Maison > développement back-end > Golang > le corps du texte

Correction de la publication d'images locales ko sur MacOs

王林
Libérer: 2024-07-22 22:43:32
original
695 Les gens l'ont consulté

Fixing ko local image publishing on MacOs

Préambule:

J'utilise toujours le bureau Docker pour exécuter des conteneurs sur mon MacBook Air. Je sais qu'il y a Colima mais je n'ai pas le temps de changer et de gérer les conséquences.
J'ai également récemment commencé à utiliser ko pour conteneuriser mes applications Go.

ko est génial mais...

J'adore ko - il crée des images minces, sécurisées et sans distribution. Mais il y a un problème - par défaut - ko build pousse l'image résultante vers le registre distant.
C'est plutôt bien pour une livraison continue, mais je fais beaucoup d'expériences et je ne veux pas toujours publier toutes les ordures que je crée à distance - en essayant de tenir compte de la bande passante du réseau et du stockage des images.

Donc, à la place, je souhaite créer mes images sur le stockage d'images local.
Il est possible de faire cela avec ko build . -L
Juste que sur MacOs, cela échouait pour moi avec ce qui suit :

2024/07/22 15:52:50 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 15:52:50 daemon.Write response:
Error: failed to publish images: error publishing ko://github.com/otomato/myapp: error loading image: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Copier après la connexion

Appeler le démon Docker

Il est clair que le client Docker à l'intérieur de ko essaie de contacter le démon Docker sur le socket standard et échoue.

J'ai essayé de rechercher cette erreur sur Google, mais je n'ai rien trouvé. J'ai donc décidé de le résoudre moi-même.
Voici le problème : sur MacOS, le socket Docker n'est pas le standard /var/run/docker.sock - il se trouve plutôt dans ~/Library/Containers/com.docker.docker/Data/docker.raw.sock

La solution

Afin de résoudre ce problème, je devais créer un lien symbolique depuis le socket Docker réel vers l'endroit où le client Docker standard s'attend à le trouver :

sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock
Copier après la connexion

Maintenant que le démon Docker peut être contacté via l'adresse de socket standard, ko peut y envoyer des images :

ko build . -B -L --platform linux/arm64
2024/07/22 16:04:04 Building github.com/otomato/myapp for linux/arm64
2024/07/22 16:04:04 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Loaded otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Adding tag latest
2024/07/22 16:04:05 Added tag latest
otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
Copier après la connexion

Entre-temps, j'ai également ouvert un numéro sur le repo ko. Mais jusqu'à ce que le problème soit résolu, ce hack fonctionne à merveille.

J'espère que cela vous aidera aussi.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!