TL;DR
Décrivez ce qui suit dans docker-compose.override.yaml
yaml:docker-compose.override.yaml
version: "3.5" # docker-compose.Match avec la version yaml
services:
app: # host.docker.Nom du service pour lequel vous souhaitez utiliser interne
extra_hosts:
- "host.docker.internal:172.101.0.1" #Correspondre à la spécification de sous-réseau ci-dessous
networks:
default:
driver: bridge
ipam:
config:
- subnet: 172.101.0.0/16 #Spécifiez de ne pas chevaucher avec d'autres réseaux
Si le pare-feu est en cours d'exécution, vous devrez peut-être autoriser l'accès à partir du sous-réseau ci-dessus. Voici un exemple de commande de firewalld.
sudo firewall-cmd --permanent --zone=trusted --add-source=172.101.0.0/16
host.docker.internal
Un domaine spécial pour accéder au réseau de l'hôte à partir d'un conteneur, pris en charge par docker pour Mac et docker pour Windows. Depuis que mac est devenu le courant dominant des développeurs, il est facile à utiliser dans les projets et les utilisateurs de Linux ont des problèmes à chaque fois.
Support host.docker.internal DNS name to host Support host.docker.internal in dockerd on Linux [RFD] add configuration option to add host.docker.internal by default
Avec ces problèmes, host.docker.internal
sera éventuellement disponible sur Linux, mais cela prendra un certain temps avant sa sortie, donc je décrirai la solution de contournement.
Au contraire, le contenu du travail est tel que décrit ci-dessus, donc je vais écrire un commentaire.
docker-compose.override.yaml
Ce fichier est lu automatiquement lorsque vous exécutez la commande docker-compose, il est donc utile lors de l'écriture de vos propres paramètres que vous ne souhaitez pas inclure dans le référentiel. Cependant, il n'est pas lu automatiquement lorsque vous utilisez l'option -f, vous devez donc également spécifier ce fichier.
Ajoutez le contenu à / etc / hosts
du conteneur.
networks
Tous les conteneurs appartiennent au réseau nommé default sauf indication contraire, donc si vous écrivez les paramètres ici, ils seront automatiquement reflétés dans tous les conteneurs. Le sous-réseau par défaut du réseau est défini ici. Normalement, le sous-réseau du réseau est automatiquement sélectionné afin qu'il ne chevauche pas le réseau existant, mais cette fois je veux le réparer, donc je le sélectionne et le configure manuellement. L'hôte appartient à tous les réseaux et son adresse IP semble être "le bit le plus bas du masque de sous-réseau est défini sur 1." (Je n'ai pas trouvé une telle déclaration dans la documentation juste parce que je l'ai essayé et dit que c'était le cas, alors peut-être qu'il y a des cas où cela ne se produit pas.) Ainsi, si vous spécifiez cette adresse IP dans extra_hosts, vous pouvez attribuer un domaine.
Recommended Posts