L'exécution de la commande suivante échoue:
Sudo docker run -p unix:///tmp/file.sock:44444 -d image_name
Quelque chose ne va pas avec ma syntaxe de redirection de port ou une configuration comme celle-ci n'est-elle pas possible?
Docker -p
la syntaxe ne prendra pas de socket Unix:
-p=[] : Publish a container᾿s port to the Host (format:
ip:hostPort:containerPort | ip::containerPort |
hostPort:containerPort)
Une solution serait de:
-p
spécification, nous l'appellerons "cont1"
(--name cont1
)-v /tmp/file.sock:/tmp/file.sock
) pour l'avoir accessible depuis l'intérieur du conteneur--link cont1:cont1
) pour pouvoir s'y connectersocat
pour acheminer le trafic de la socket unix vers le "cont1:4444"
point de terminaisonJe ne suis pas un expert en socat, mais la spécification d'adresse dont vous aurez besoin devrait ressembler à ceci: UNIX-LISTEN:/tmp/file.sock,fork,reuseaddr TCP4:cont1:4444
La réponse acceptée est cependant partiellement correcte car vous ne pouvez lier que des répertoires, ce qui signifie que vous devez lier le répertoire du socket au lieu du socket lui-même.
Ce qui suit l'a fait pour moi quand je voulais connecter une prise postgres.
docker run -p 5432:5432 -v /run/postgresql:/run/postgresql -d --name postgres postgres
Cela permet de lier le fichier socket postgres à votre système hôte.