Maison >développement back-end >Golang >Correction de la publication d'images locales ko sur MacOs
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.
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?
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
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
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
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!