podman/podman-compose では、コンテナ間のネットワーキングはどのように機能しますか?

podman/podman-compose では、コンテナ間のネットワーキングはどのように機能しますか?

私は私の家の研究室でpodmanバージョン4.0.2とpodman-composeバージョン1.0.3を使用してRHEL 9.0互換オペレーティングシステムを実行しています。追加情報が必要な場合はお知らせください!

Dockerコンテナの使用からルートレスPodmanコンテナの使用に切り替えようとしています。そのために、私が試したほとんどすべての* nixオペレーティングシステムに新しくインストールされたDocker設定で実行される非常に単純なサービスセットを紹介しました。簡単ですか?いいえ

まず、コンテナイメージへのフルパスを提供し、Dockerリポジトリに表示されているようにそれを参照する必要がありました。悪くないね

私の作成ファイルはブリッジされたネットワークを宣言し、各サービスはそのネットワークに接続します。

コンテナからポートが公開されているすべてのサービスは、ネットワーク上の他のコンピュータからアクセスできます。ポート8080、8443、3306はすべて私のラップトップからアクセスできます。

問題は、コンテナが互いに通信できないことです。 Dockerネットワークを使用すると、コンテナはコンテナ名のみをホスト名として使用して互いを解決できます。各コンテナにpingをインストールしましたが、独自のコンテナ名を参照すると、すべて独自にpingを実行できますが、他のコンテナではpingを実行できないことがわかりました。これは、根のないコンテナに対する私の計画を実際に妨げます。

私の作成ファイルでまずネットワークを宣言します。

version: 3.1

networks:
  neta:
    driver: bridge

各サービスはコンテナ名を宣言し、それをネットワークに接続します。たとえば、次のようになります。

    container_name: httpd
    networks:
      - neta
...
    container_name: mariadb
    networks:
      - neta

問題は私のファイルに限定されているのではなく、根のないPodman属性に関連していると思うので、完全な作成ファイルを公開しません。

私の問題は、httpdコンテナがmariadbにアクセスできず、その逆も同様です。

私のフォードマン旅行は24時間も経てず、実際には4時間も経っていません。私はコンテナネットワーキングが「ただ動作する」と思ったが、今は間違っている。

どんなコメント、リンク、提案にも感謝します。

ありがとう

ベストアンサー1

docker composeファイルをkubernetes yamlファイルに変換することをお勧めします。これにより、Podman Play kubeを活用できます。https://docs.podman.io/en/v3.4.1/markdown/podman-play-kube.1.html

yamlファイル自体のdocker composeファイルで実行する操作と同様に、ポートを定義できます。すべてのコンテナは同じポッドにあるため、localhostを使用できます。

  - name: container_A
    image: docker.io/container_A
    ports:
      - containerPort: 27017
        hostPort: 27017
        protocol: TCP
  - name: container_B
    image: docker.io/container_B
    ports:
      - containerPort: 8081
        hostPort: 8081
        protocol: TCP

おすすめ記事