[Docker] Docker-compose DNS exposen naar host

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Homewrecker
  • Registratie: Oktober 2009
  • Laatst online: 06-02 09:22
Hey,

Ik heb een docker compose configuratie met vier containers.
Standaard maakt docker compose een netwerk aan waardoor de containers met elkaar kunnen communiceren.
Dit gebeurt op basis van de naam die je meegeeft als container-name.
Echter zou ik vanaf mijn host aan die dns namen willen geraken.
Stel volgende:
code:
1
2
3
4
5
6
  webapp:
    container_name: webapp
    build: app/.
    ports:
      - 8081:8081
      - 8080:8080

Andere containers in dezelfde compose-file zullen met bovenstaande container kunnen communiceren via webapp:8080 en webapp:8081
Echter wil ik bekomen dat ik vanaf mijn host de container eveneens kan aanspreken via webapp:8080 ipv localhost:8080.

Iemand enig idee hoe ik dit voor elkaar krijg?
Alvast bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 17:06

Hero of Time

Moderator LNX

There is only one Legend

Had je zelf eigenlijk al gezocht? Bij het maken van dit topic stonden er drie vragen vooraf ingevuld om je te helpen. Die zie ik niet terug in je post. Voldoet https://stackoverflow.com...ame-instead-of-ip-address bijvoorbeeld aan je wensen?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • init6
  • Registratie: Mei 2012
  • Niet online
Klachten kan je elders kwijt, niet hier in dit topic.

[ Voor 86% gewijzigd door Hero of Time op 01-01-2019 13:27 ]


Acties:
  • 0 Henk 'm!

  • Homewrecker
  • Registratie: Oktober 2009
  • Laatst online: 06-02 09:22
Hero of Time schreef op maandag 31 december 2018 @ 23:09:
Had je zelf eigenlijk al gezocht? Bij het maken van dit topic stonden er drie vragen vooraf ingevuld om je te helpen. Die zie ik niet terug in je post. Voldoet https://stackoverflow.com...ame-instead-of-ip-address bijvoorbeeld aan je wensen?
Ik had al op verschillende plekken gezocht, maar zonder resultaat.
Het artikel dat je linkt is hetgeen waar ik ook telkens op uit kom maar dat gaat over de interne DNS en de containers die daarvan gebruik maken. Ik wil net van buitenaf aan die DNS geraken.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 17:06

Hero of Time

Moderator LNX

There is only one Legend

Zoals ik het antwoord lees, is het met een kleine aanpassing ook van buiten te gebruiken. Het is wat lastiger of vervelender als je docker compose gebruikt vanwege de wat aparte namen, maar het zou wel moeten kunnen, als ik het iig goed begrijp.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Big Mama
  • Registratie: Mei 2000
  • Laatst online: 06-06 21:03
Homewrecker schreef op maandag 31 december 2018 @ 16:57:
Echter wil ik bekomen dat ik vanaf mijn host de container eveneens kan aanspreken via webapp:8080 ipv localhost:8080.
Kun je in /etc/hosts op de dockerhost(s) de hostname webapp niet laten resolven naar 127.0.0.1?

Computers follow your orders, not your intentions.


Acties:
  • 0 Henk 'm!

  • Homewrecker
  • Registratie: Oktober 2009
  • Laatst online: 06-02 09:22
Big Mama schreef op woensdag 2 januari 2019 @ 13:46:
[...]


Kun je in /etc/hosts op de dockerhost(s) de hostname webapp niet laten resolven naar 127.0.0.1?
In theorie zou dit kunnen maar de bedoeling is dat alles op bamboo gaat draaien en op diens agents.
Het lijkt mij dus niet echt wenselijk om al die agents aan te passen qua portability.

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 05-06 17:59

CAPSLOCK2000

zie teletekst pagina 888

Homewrecker schreef op maandag 31 december 2018 @ 16:57:
Dit gebeurt op basis van de naam die je meegeeft als container-name.
Echter zou ik vanaf mijn host aan die dns namen willen geraken.
Dat kan eigenlijk niet en past ook niet goed in het model dat Docker hanteert. De namen zijn er voor de containers onderling, niet voor de buitenwereld.
Het lukt wel met extra tools, zoals bv Consul.
Je containers moeten zich dan melen bij Consul en Consul draait een DNS-server die je ook van buiten kan benaderen.
Hero of Time schreef op dinsdag 1 januari 2019 @ 19:06:
Zoals ik het antwoord lees, is het met een kleine aanpassing ook van buiten te gebruiken. Het is wat lastiger of vervelender als je docker compose gebruikt vanwege de wat aparte namen, maar het zou wel moeten kunnen, als ik het iig goed begrijp.
Welk antwoord bedoel je precies? Het antwoord dat begint met "Docker 1.10 has a built in DNS." want daarin zie ik geen oplossing voor dit probleem. Die gebruiker heeft een externe DNS-server met daarin een statische hostname, dat is iets heel anders.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 17:06

Hero of Time

Moderator LNX

There is only one Legend

CAPSLOCK2000 schreef op woensdag 2 januari 2019 @ 18:38:
[...]

Welk antwoord bedoel je precies? Het antwoord dat begint met "Docker 1.10 has a built in DNS." want daarin zie ik geen oplossing voor dit probleem. Die gebruiker heeft een externe DNS-server met daarin een statische hostname, dat is iets heel anders.
Toen ik 'm vond dacht ik dat het een oplossing was, maar nu ik 'm weer lees, zie ik dat het alleen voor de containers onderling is en dat werkt natuurlijk niet op je host.
Zoals ik al zei: 'tenzij ik het verkeerd begrijp'. Dat deed ik.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Yarisken
  • Registratie: Augustus 2010
  • Laatst online: 11:06
Ik wil dit wel even volgen. Enige manier is gebruik maken van een soort nat proxy maar das wel dirty maar misschien kan docker dit toch nog ondervangen. Interessante vraag waar menig mensen vroeg of laat wel mee te maken gaan hebben.

Acties:
  • 0 Henk 'm!

  • LuBJe
  • Registratie: Mei 2002
  • Laatst online: 27-03 02:25

LuBJe

Geilness ten top!

@Homewrecker Weet niet precies wat je wil bereiken maar misschien kan je hier iets mee:

https://github.com/jwilder/nginx-proxy

Deze gebruik ik sinds kort, al is het nu nog wel alleen local.

Heb meerdere docker-compose bestanden (elke met b.v. mysql, redis, php-fpm en nginx services) gelinkt aan een gedeeld netwerk.

Bij een van de mysql service heb ik in de docker-compose bestand de environment variabele "VIRTUAL_HOST" gezet op 'mysql.local'.

Zo kan ik met m'n mysql client connecten naar mysql.local. Zo kunnen ze allemaal dezelfde poort blijven gebruiken en kan je meerdere hosts gebruiken.

Ga hem zelf gebruiken om meerdere websites (docker-compose bestanden met diverse eigen services) te kunnen draaien vanaf 1 vps.
Meerdere domeinen komen binnen op de proxy en deze kijkt voor welke van alle services die via het gedeelde netwerk beschikbaar zijn, deze hots is ingesteld. Op productie zullen dit alleen de nginx services zijn.

CASE: Fractal Design Define R4 Pearl Black, CPU: Intel Core i7 4770K, GPU: MSI GeForce GTX 770 Gaming, MOBO: MSI Z87-G45 Gaming, PSU: Corsair Gaming GS600, RAM: Kingston 2x4GB 1600 DDR3 CL9, SSD: Samsung 840 EVO 250GB


Acties:
  • 0 Henk 'm!

  • mdbraber
  • Registratie: Juli 2010
  • Niet online
Wellicht vind je hier nog wat tips: https://dev.to/karlredman...ith-dns-proxy-server-1d08

Ik heb om deze reden voorlopig nog liever LXC containers dan Docker, omdat public IPs / hostnames bij Docker niet de standaard zijn. Je kan wel evt. een macvlan netwerk maken, dan is de container als een 'gewone' host zichtbaar in het netwerk.
Pagina: 1