Différence réseau entre podman et podman-compose: runtime-700

Quand je lance podman compose up -d avec ce podman-compose.yaml ça ne fonctionne pas :

2023-11-20 09:43:44 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0

Par contre avec :

Ça passe. Je ne vois pas ce qui ne va pas dans le fichier compose.

Tu aurais des logs plus complètes ?

podman-compose up -d
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.7.2
** excluding:  set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=docker', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
podman volume inspect docker_data-mirror || podman volume create docker_data-mirror
['podman', 'volume', 'inspect', 'docker_data-mirror']
['podman', 'network', 'exists', 'docker_default']
podman run --name=docker_duniter-mirror_1 -d --label io.podman.compose.config-hash=4659683d71cdacd8f8a63e1cfd9e5be7762b632d3d9ca9dc34a66cc8ed2b7c36 --label io.podman.compose.project=docker --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@docker.service --label com.docker.compose.project=docker --label com.docker.compose.project.working_dir=/home/moul/projects/ML/duniter-v2s/docker --label com.docker.compose.project.config_files=podman-compose.yaml --label com.docker.compose.container-number=1 --label com.docker.compose.service=duniter-mirror -e DUNITER_CHAIN_NAME=gdev -e DUNITER_VALIDATOR=false -e DUNITER_NODE_NAME=moul-mirror -v docker_data-mirror:/var/lib/duniter/ --net docker_default --network-alias duniter-mirror -p 9615:9615 -p 9945:9944 -p 9944:9944 -p 30333:30333 --restart unless-stopped duniter/duniter-v2s-gdev:latest
0510a127d9055a95b59cbd9dbf731ba355faa15d4bd831b896eb58cdaea02983
exit code: 0
podman logs -f docker_duniter-mirror_1
Node key file '/var/lib/duniter/node.key' exists.
Node peer ID is '12D3KooWNbM5ik3z71nj9LfeYhVCTVv3SFxXg91N2UKnooxmRc4v'.
Starting duniter with parameters: --name moul-mirror --node-key-file /var/lib/duniter/node.key --rpc-cors all --chain gdev -d /var/lib/duniter --unsafe-rpc-external --unsafe-ws-external
2023-11-20 09:37:23 Duniter    
2023-11-20 09:37:23 ✌️  version 0.7.0-unknown    
2023-11-20 09:37:23 ❤️  by Axiom-Team Developers <https://axiom-team.fr>, 2021-2023    
2023-11-20 09:37:23 📋 Chain specification: ĞDev    
2023-11-20 09:37:23 🏷  Node name: moul-mirror    
2023-11-20 09:37:23 👤 Role: FULL    
2023-11-20 09:37:23 💾 Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2023-11-20 09:37:23 ⛓  Native runtime: gdev-700 (duniter-gdev-1.tx1.au1)    
2023-11-20 09:37:24 🏷  Local node identity is: 12D3KooWNbM5ik3z71nj9LfeYhVCTVv3SFxXg91N2UKnooxmRc4v    
2023-11-20 09:37:24 💻 Operating system: linux    
2023-11-20 09:37:24 💻 CPU architecture: x86_64    
2023-11-20 09:37:24 💻 Target environment: gnu    
2023-11-20 09:37:24 💻 CPU: 12th Gen Intel(R) Core(TM) i7-12700    
2023-11-20 09:37:24 💻 CPU cores: 12    
2023-11-20 09:37:24 💻 Memory: 31821MB    
2023-11-20 09:37:24 💻 Kernel: 6.5.7-200.fc38.x86_64    
2023-11-20 09:37:24 💻 Linux distribution: Debian GNU/Linux 11 (bullseye)    
2023-11-20 09:37:24 💻 Virtual machine: no    
2023-11-20 09:37:24 📦 Highest known block at #64    
2023-11-20 09:37:24 〽️ Prometheus exporter started at 127.0.0.1:9615    
2023-11-20 09:37:24 Running JSON-RPC HTTP server: addr=0.0.0.0:9933, allowed origins=["*"]    
2023-11-20 09:37:24 Running JSON-RPC WS server: addr=0.0.0.0:9944, allowed origins=["*"]    
2023-11-20 09:37:24 ***** Duniter has fully started *****    
2023-11-20 09:37:29 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:34 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:39 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:44 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:44 ❌ Error while dialing /dns/telemetry.polkadot.io/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }    
2023-11-20 09:37:49 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:54 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    
2023-11-20 09:37:59 💤 Idle (0 peers), best: #64 (0x21cd…21ec), finalized #0 (0xc234…a857), ⬇ 0 ⬆ 0    

Voici ce que j’ai pour ma part :

Generating node key file '/var/lib/duniter/node.key'...
12D3KooWSQUn7Uuk2q96JZYMEsrE73qDJdjNsxLC6cVwQRi5koWH
Node peer ID is '12D3KooWSQUn7Uuk2q96JZYMEsrE73qDJdjNsxLC6cVwQRi5koWH'.
Starting duniter with parameters: --name pini-gdev-mirror --node-key-file /var/lib/duniter/node.key --public-addr /dns/gdev.pini.fr/tcp/443/wss --rpc-cors all --chain gdev -d /var/lib/duniter --unsafe-rpc-external --unsafe-ws-external
2023-11-19 20:26:01 Duniter    
2023-11-19 20:26:01 <E2><9C><8C><EF><B8><8F>  version 0.7.0-unknown    
2023-11-19 20:26:01 <E2><9D><A4><EF><B8><8F>  by Axiom-Team Developers <https://axiom-team.fr>, 2021-2023    
2023-11-19 20:26:01 <F0><9F><93><8B> Chain specification: <C4><9E>Dev    
2023-11-19 20:26:01 <F0><9F><8F><B7>  Node name: pini-gdev-mirror    
2023-11-19 20:26:01 <F0><9F><91><A4> Role: FULL    
2023-11-19 20:26:01 <F0><9F><92><BE> Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2023-11-19 20:26:01 <E2>  Native runtime: gdev-700 (duniter-gdev-1.tx1.au1)    
2023-11-19 20:26:36 <F0><9F><94><A8> Initializing Genesis block/state (state: 0x9e85<E2><80><A6>84da, header-hash: 0xc234<E2><80><A6>a857)    
2023-11-19 20:26:39 <F0><9F><91><B4> Loading GRANDPA authority set from genesis on what appears to be first startup.    
2023-11-19 20:27:01 <F0><9F><91><B6> Creating empty BABE epoch changes on what appears to be first startup.    
2023-11-19 20:27:01 <F0><9F><8F><B7>  Local node identity is: 12D3KooWSQUn7Uuk2q96JZYMEsrE73qDJdjNsxLC6cVwQRi5koWH    
2023-11-19 20:27:01 <F0><9F><94><8D> Discovered new external address for our node: /dns/gdev.pini.fr/tcp/443/wss/p2p/12D3KooWSQUn7Uuk2q96JZYMEsrE73qDJdjNsxLC6cVwQRi5koWH    
2023-11-19 20:27:01 <F0><9F><92><BB> Operating system: linux    
2023-11-19 20:27:01 <F0><9F><92><BB> CPU architecture: x86_64    
2023-11-19 20:27:01 <F0><9F><92><BB> Target environment: gnu    
2023-11-19 20:27:01 <F0><9F><92><BB> CPU: Intel(R) Atom(TM) CPU N2800   @ 1.86GHz    
2023-11-19 20:27:01 <F0><9F><92><BB> CPU cores: 2    
2023-11-19 20:27:01 <F0><9F><92><BB> Memory: 3902MB    
2023-11-19 20:27:01 <F0><9F><92><BB> Kernel: 5.10.0-23-amd64    
2023-11-19 20:27:01 <F0><9F><92><BB> Linux distribution: Debian GNU/Linux 11 (bullseye)    
2023-11-19 20:27:01 <F0><9F><92><BB> Virtual machine: no    
2023-11-19 20:27:01 <F0><9F><93><A6> Highest known block at #0    
2023-11-19 20:27:01 Running JSON-RPC HTTP server: addr=0.0.0.0:9933, allowed origins=["*"]    
2023-11-19 20:27:01 Running JSON-RPC WS server: addr=0.0.0.0:9944, allowed origins=["*"]    
2023-11-19 20:27:01 <E3><80><BD><EF><B8><8F> Prometheus exporter started at 127.0.0.1:9615    
2023-11-19 20:27:01 ***** Duniter has fully started *****    
2023-11-19 20:27:01 discovered: 12D3KooWMLkiTWezwCJZ2gQko4j7KkWDSL7LjcAA3zGQWB7ctL1m /ip4/172.18.0.10/tcp/30333/ws    
2023-11-19 20:27:03 <F0><9F><94><8D> Discovered new external address for our node: /dns/gdev.pini.fr/tcp/30333/ws/p2p/12D3KooWSQUn7Uuk2q96JZYMEsrE73qDJdjNsxLC6cVwQRi5koWH    
2023-11-19 20:27:06 <E2><9A><99><EF><B8><8F>  Syncing, target=#5870 (3 peers), best: #1 (0x17f3<E2><80><A6>4fdd), finalized #0 (0xc234<E2><80><A6>a857), <E2><AC><87> 145.7kiB/s <E2><AC><86> 5.0kiB/s    

On ne voit pas ces lignes dans ton cas :

2023-11-19 20:26:36 <F0><9F><94><A8> Initializing Genesis block/state (state: 0x9e85<E2><80><A6>84da, header-hash: 0xc234<E2><80><A6>a857)    
2023-11-19 20:26:39 <F0><9F><91><B4> Loading GRANDPA authority set from genesis on what appears to be first startup.    
2023-11-19 20:27:01 <F0><9F><91><B6> Creating empty BABE epoch changes on what appears to be first startup.    

As-tu pensé à bien purger tes volumes avec l’équivalent podman de docker-compose down -v avant de redémarrer ?

podman-compose down -v semble avoir aidé, maintenant les lignes Granpa/babe sont affichées.
Par contre, pas de connexion au réseau. Peut-être un problème de configuration réseau dans le fichier compose.

Tente l’ajout d’un réseau dans le compose. Pas de conf spécifique :

services:
  duniter-rpc:
    image: duniter/duniter-v2s-gdev
    ...
    networks:
      frontend:
...

networks:
  frontend:

Merci. Ça n’aide pas.

Bizarre. Côté réseau on est vraiment dans une conf de base. Rien à faire. Qu’est-ce qui te fait dire qu’il n’a pas de réseau ?

Car, il n’arrive pas à se connecter aux autres endpoints RPC ni à la télémétrie. J’ai tenté de vérifier, mais il n’y a pas ping d’installé et je n’arrive pas à installer d’outils réseau sur l’image.
Il doit y avoir une différence entre quand l’image est lancée via podman ou via podman-compose.

podman exec -it -u root <containerId> bash puis apt update. S’il n’a pas de réseau cette dernière commande ne fonctionnera pas. Et dans ce cas je penche pour une spécificité podman que je ne connais pas (j’utilise encore Docker pour ma part).

Mon intuition se confirme. Dans le conteneur lancé avec podman, apt update fonctionne.
Dans le conteneur lancé avec podman-compose, apt update échoue :

root@88c13275d228:/# apt update
Err:1 http://deb.debian.org/debian bullseye InRelease
  Temporary failure resolving 'deb.debian.org'
0% [Connecting to deb.debian.org]^C

Merci pour la commande, je ne savais pas qu’on pouvait passer root ainsi.

La dernière fois avec le runtime-400, la solution podman-compose fonctionnait.
Entre-temps le runtime a évoluée, et mon système a été mis à niveau.

Je vais tenter docker-compose pour comparer.

Ça fonctionne avec docker-compose. podman-compose doit avoir un bug sous Fedora 38.
Désolé pour le bruit.

1 Like

Je ne souhaite pas déranger plus avec mes aventures, mais je vais quand même faire un retour.
Après une màj en Fedora 39, c’est docker qui n’est pas fonctionnel :

Par contre, c’est podman-compose qui est de nouveau fonctionnel.
C’est fou les mystères de l’informatique :stuck_out_tongue:

Je me rends compte qu’il est possible de faire la même chose avec podman avec une longe ligne de commande plutôt qu’avec un fichier compose. Le compose est converti en ligne de commande comme le montre l’extrait suivant :

En faisant des tests, le fait de spécifier des ports avec Podman, fait que le réseau est cassé dans le conteneur, du moins sur les ports spécifiés. Du coup, sans spécifier les ports et la partie réseau --net docker_default --network-alias duniter-mirror -p 9615:9615 -p 9945:9944 -p 9944:9944 -p 30333:30333 , ça fonctionne bien.