⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Conteneurs isolés du réseau

Requires: Docker Desktop 4.29.0 and later

Les conteneurs isolés du réseau vous permettent de restreindre les conteneurs d'accéder aux ressources réseau, limitant où les données peuvent être téléchargées vers ou téléchargées depuis.

Docker Desktop peut appliquer un ensemble personnalisé de règles de proxy au trafic réseau depuis les conteneurs. Le proxy peut être configuré pour :

  • Accepter les connexions réseau
  • Rejeter les connexions réseau
  • Tunneler à travers un proxy HTTP ou SOCKS

Vous pouvez choisir :

  • À quels ports TCP sortants la politique s'applique. Par exemple, seulement certains ports, 80, 443 ou tous avec *.
  • Que ce soit de rediriger vers un seul proxy HTTP ou SOCKS, ou d'avoir une politique par destination via un fichier de Configuration Automatique de Proxy (PAC).

Configuration

En supposant que la connexion forcée et la Gestion des Paramètres sont activées, ajoutez la nouvelle configuration de proxy au fichier admin-settings.json. Par exemple :

{
  "configurationFileVersion": 2,
  "containersProxy": {
    "locked": true,
    "mode": "manual",
    "http": "",
    "https": "",
    "exclude": [],
    "pac": "http://192.168.1.16:62039/proxy.pac",
    "transparentPorts": "*"
  }
}

Le paramètre containersProxy décrit la politique qui est appliquée au trafic depuis les conteneurs. Les champs valides sont :

  • locked : Si vrai, il n'est pas possible pour les développeurs de remplacer ces paramètres. Si faux, les paramètres sont interprétés comme valeurs par défaut que le développeur peut changer.
  • mode : Même signification qu'avec le paramètre proxy existant. Les valeurs possibles sont system et manual.
  • http, https, exclude : Même signification qu'avec le paramètre proxy. Prend effet seulement si mode est défini sur manual.
  • pac : URL pour un fichier PAC. Prend effet seulement si mode est manual, et est considéré comme priorité plus élevée que http, https, exclude.
  • transparentPorts : Une liste séparée par des virgules de ports (par ex. "80,443,8080") ou un caractère générique (*) indiquant quels ports doivent être proxifiés.
Important

Tout paramètre proxy existant dans le fichier admin-settings.json continue de s'appliquer au trafic depuis l'app sur l'hôte. Si le téléchargement du fichier PAC échoue, l'app Docker Desktop et ses conteneurs ne bloquent pas la demande ; à la place, ils tentent de se connecter directement à l'URL cible.

Exemple de fichier PAC

Pour des informations générales sur les fichiers PAC, voir les Docs Web MDN.

Voici un exemple de fichier PAC :

function FindProxyForURL(url, host) {
	if (localHostOrDomainIs(host, 'internal.corp')) {
		return "PROXY 10.0.0.1:3128";
	}
	if (isInNet(host, "192.168.0.0", "255.255.255.0")) {
	    return "DIRECT";
	}
    return "PROXY reject.docker.internal:1234";
}

Le paramètre url est soit http://host_ou_ip:port soit https://host_ou_ip:port.

Le nom d'hôte est normalement disponible pour les demandes sortantes sur le port 80 et 443, mais pour d'autres cas il n'y a qu'une adresse IP.

Le FindProxyForURL peut retourner les valeurs suivantes :

  • PROXY host_ou_ip:port : Tunnelle cette demande à travers le proxy HTTP host_ou_ip:port
  • SOCKS5 host_ou_ip:port : Tunnelle cette demande à travers le proxy SOCKS host_ou_ip:port
  • DIRECT : Laisse cette demande aller directement, sans proxy
  • PROXY reject.docker.internal:n'importe_quel_port : Rejette cette demande

Dans cet exemple particulier, les demandes HTTP et HTTPS pour internal.corp sont envoyées via le proxy HTTP 10.0.0.1:3128. Les demandes de connexion aux IP sur le sous-réseau 192.168.0.0/24 se connectent directement. Toutes les autres demandes sont bloquées.

Pour restreindre le trafic se connectant aux ports sur la machine locale du développeur, correspondez au nom d'hôte spécial host.docker.internal.