私は今でも 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?
明らかに、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 サイトの他の関連記事を参照してください。