私は私の家の研究室で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