Attribuer une @ip fixe à un container

Merci pour vos retour je vais sans doute ( quand j’aurai le temps ) basculer tout dans un fichier :stuck_out_tongue:

J’ai juste un petit problème actuellement je voudrai attribuer une ip fixe a mon influxdb mais je n’y arrive pas :

version: "3"
services:
  grafana:
    image: grafana/grafana
    container_name: Grafana
    restart: always
    ports:
      - 3000:3000
    networks:
      - monitoring
    volumes:
      - grafana-volume:/vol01/Docker/monitoring
  
  influxdb:
    image: influxdb
    container_name: Influxdb
    restart: always
    ports:
      - 8086:8086
    networks:
      monitoring:
        ipv4_address: 172.19.0.3
    volumes:
      - influxdb-volume:/vol01/Docker/monitoring
    environment:
      - INFLUXDB_DB=telegraf
      - INFLUXDB_USER=telegraf
      - INFLUXDB_ADMIN_ENABLED=true
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=MonPaswd
      - PUID=1000
      - PGID=100

  telegraf:
    image: telegraf
    container_name: Telegraf
    restart: always
    networks:
      - monitoring
    extra_hosts:
      - "influxdb:172.19.0.3"
    environment:
      HOST_PROC: /rootfs/proc
      HOST_SYS: /rootfs/sys
      HOST_ETC: /rootfs/etc
      - PUID=1000
      - PGID=100
    volumes:
     - /sharedfolders/AppData/Telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /sys:/rootfs/sys:ro
     - /proc:/rootfs/proc:ro
     - /etc:/rootfs/etc:ro

networks:
  monitoring:
    external: true
volumes:
  grafana-volume:
    external: true
  influxdb-volume:
    external: true

une idée d’où pourrait venir le problème ?

C’est pas du tout l’objectif d’un container… C’est pas comme une VM !
Si tu as besoin d’accéder à un port particulier, tu fais un exactement comme là, le port 8086 de la machine hote sera lié au 8086 container influxdb

Celà dit, cette partie en external n’aide surement pas non plus :

Par défaut, tous les services d’un container sont dans le même network… (d’où l’autre intérêt de faire des docker-compose différents)… Et le nom DNS c’est le nom du service au sein du network

ça peut être utile quand tu as une bdd qui devrait garder son ip pour éviter que le container change d’ip et que ta conf ne fonctionne plus non ? ( car suivant l’ordre de démarrage mes container prennent une IP différente )

Je me trompe peut être.

Pour la partie external j’indique simplement que le network est existant et qu’il ne faut pas le créer.

je peux le faire comme ça sinon pour la partie network

version: "3"
services:
  grafana:
    image: grafana/grafana
    container_name: Grafana
    restart: always
    ports:
      - 3000:3000
    networks:
      - monitoring
    volumes:
      - grafana-volume:/vol01/Docker/monitoring
  
  influxdb:
    image: influxdb
    container_name: Influxdb
    restart: always
    ports:
      - 8086:8086
    networks:
      monitoring:
        ipv4_address: 172.19.0.3
    volumes:
      - influxdb-volume:/vol01/Docker/monitoring
    environment:
      - INFLUXDB_DB=telegraf
      - INFLUXDB_USER=telegraf
      - INFLUXDB_ADMIN_ENABLED=true
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=MonPaswd
      - PUID=1000
      - PGID=100

  telegraf:
    image: telegraf
    container_name: Telegraf
    restart: always
    networks:
      - monitoring
    extra_hosts:
      - "influxdb:172.19.0.3"
    environment:
      HOST_PROC: /rootfs/proc
      HOST_SYS: /rootfs/sys
      HOST_ETC: /rootfs/etc
    volumes:
     - /sharedfolders/AppData/Telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /sys:/rootfs/sys:ro
     - /proc:/rootfs/proc:ro
     - /etc:/rootfs/etc:ro

networks:
  monitoring:
    driver: bridge
    ipam:
     config:
       - subnet: 172.19.0.0/24
       - gateway: 172.19.0.1
    
volumes:
  grafana-volume:
    external: true
  influxdb-volume:
    external: true

Oui justement. Etant donné que son nom de service est toujours le même, pas besoin de connaitre son IP. Dans les éventuelles configurations, tu utilises influxbd, ça résoudra avec son adresse IP (même si elle change)

C’est pareil, techniquement on s’en fiche… 1 docker-compose = 1 VLAN…
Là où ça peut servir, c’est si tu as besoin d’ajouter un container d’un autre docker-compose pour qu’il puisse joindre un des tes services dans la stack ‹ monitoring ›… Par exemple, un reverse proxy (avec Traefik, c’est particulier, les containers sont connu avec les labels)
Même le scope IP c’est pas nécessaire…

Pour résumer on accéder jamais de l’extérieur (en gros depuis les machines physiques) à une adresse ip interne d’un container. On accède si et seulement si on a besoin à 1 port physique qui est lié à 1 port du container…
Les containers dans un docker-compose se connaissent par leur nom.
Si on veut permettre à 2 containers de deux docker-compose de se joindre, on les mets dans un network dédié à cette communication
On se fiche des adresses IP/ des scopes (c’est déjà isolé, ce sont des VLAN) Et donc puisque c’est isolé par défaut, on ne mets pas tous les containers dans un même VLAN…

1 « J'aime »

Demande d’aide déplacée.

Merci de respecter le but de chaque sujet :+1:

Merci pour la mise au point c’est plus clair maintenant.