MacOs でのローカル イメージの公開を修正する

王林
リリース: 2024-07-22 22:43:32
オリジナル
625 人が閲覧しました

Fixing ko local image publishing on MacOs

前文:

私は今でも MacBook Air でコンテナを実行するために Docker デスクトップを使用しています。コリマがあることはわかっていますが、切り替えてその結果に対処する時間がありません。
私も最近、Go アプリのコンテナ化に ko を使い始めました。

こは素晴らしいけど…

私は ko が大好きです。これは、ディストロレスで安全でスリムなイメージを構築します。ただし、問題が 1 つあります。デフォルトでは、ko build は結果のイメージをリモート レジストリにプッシュします。
継続的配信にはある程度問題ありませんが、私は多くの実験を行っており、ネットワーク帯域幅と画像ストレージを考慮して、作成したすべてのゴミを常にリモートに公開したくないのです。

その代わりに、ローカルのイメージ ストレージにイメージをビルドしたいと思います。
ko build を使用するとそれが可能です。 -L
ただ、MacOS では次のような問題が発生して失敗していました:

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?
ログイン後にコピー

Docker デーモンの呼び出し

明らかに、ko 内の Docker クライアントが標準ソケット上の Docker デーモンに接続しようとして失敗しています。

このエラーについてグーグル検索してみましたが、何も見つかりませんでした。そこで私は自分で解決することにしました。
これが問題です - MacOS では、Docker ソケットは標準の /var/run/docker.sock ではなく、~/Library/Containers/com.docker.docker/Data/docker.raw.sock

にあります。

解決策

これを修正するために必要なことは、実際の Docker ソケットから、標準の Docker クライアントが見つけることを期待する場所へのシンボリックリンクを作成することです。

sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock
ログイン後にコピー

これで、標準ソケット アドレスを介して Docker デーモンにアクセスできるようになりました - ko はそれにイメージをプッシュできます:

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
ログイン後にコピー

その間、私は ko リポジトリにも問題をオープンしました。しかし、修正されるまでは、このハックは魅力的に機能します。

これがあなたにも役立つことを願っています。

以上がMacOs でのローカル イメージの公開を修正するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!