2

RUNデータベースのインポート操作のためにmariadbサーバーを起動するいくつかのコマンドを含むDockerfileがあります。

問題は、コマンドpodman buildのネットワークモードをデフォルトでに設定することです。これは、ホストのネットワークインターフェイスを使用します-podmanのドキュメントから理解したように-したがって、mariadbステップが来ると、別のmariadbインスタンスが実行されているため、サーバーを起動できません同じポートを持つホスト-一時的に停止できません。RUNhost

私にとってうまくいった回避策は--network container、コマンドにフラグを追加することですbuildが、これを行うと、依存関係をインストールしている他のステップのインターネットアクセスが妨げyumられました.ビルドステップ用に作成されたネットワーク名前空間には、外部-インターネット-アクセスがありません.

ビルド中のイメージにシステムの依存関係をインストールするには、ホスト ネットワークを使用する必要があり、ネットワーク インターフェイスを使用するサービスを開始するには、インターネットにアクセスできないコンテナー ネットワークを使用する必要があります。buildただし、runコンテナをユーザー定義のブリッジ ネットワークで接続している間は、インターネットにアクセスできます。

現時点での私の回避策は、ホスト ネットワークで 1 回ビルドし、もう 1 回はコンテナー ネットワークでビルドすることです。2 回目buildは、外部依存関係が既にインストールされているキャッシュ イメージを使用します。DockerfileまたはContainerfileホストネットワークを使用し、ブリッジネットワークを使用します。

この問題の詳細についてお詫び申し上げます。この特定のケースを検索しようとしましたが、手順の各グループを手動で構築する以外に明確な答えが見つかりませんでした。

PS:コンテナーの実行中に機能するユーザー定義のネットワークにフラグを設定しようとしましnetworkたが、サポートされていないか、build.

4

1 に答える 1