Según https://docs.docker.com/compose/compose-file/#links si je spécifie le nom d'un autre service dans la rubrique links
sur docker-compose
je devrais pouvoir atteindre ce service avec un nom d'hôte identique au nom du service.
Pour tester cela, j'ai essayé ce qui suit docker-compose.yml
:
version: '3'
services:
tor:
build: ./tor
use_tor:
build: ./use_tor
links:
- tor
où le tor
y use_tor
Les répertoires contiennent Dockerfile
s :
.
├── docker-compose.yml
├── tor
│ └── Dockerfile
└── use_tor
└── Dockerfile
qui sont, pour tor
:
FROM alpine:latest
EXPOSE 9050
RUN apk --update add tor
CMD ["tor"]
et pour use_tor
:
FROM alpine:latest
CMD ["nc", "-z", "tor", "9050"]
Cependant, si je fais docker-compose build
suivi par docker-compose up
Je vois dans les journaux que le use_tor
Le service quitte avec le code d'état 1 :
Starting scrapercompose_tor_1
Recreating scrapercompose_use_tor_1
Attaching to scrapercompose_tor_1, scrapercompose_use_tor_1
tor_1 | May 02 15:36:34.123 [notice] Tor v0.2.8.12 running on Linux with Libevent 2.0.22-stable, OpenSSL LibreSSL 2.4.4 and Zlib 1.2.8.
tor_1 | May 02 15:36:34.123 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
tor_1 | May 02 15:36:34.123 [notice] Configuration file "/etc/tor/torrc" not present, using reasonable defaults.
tor_1 | May 02 15:36:34.129 [notice] Opening Socks listener on 127.0.0.1:9050
tor_1 | May 02 15:36:34.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
tor_1 | May 02 15:36:34.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
tor_1 | May 02 15:36:34.000 [warn] You are running Tor as root. You don't need to, and you probably shouldn't.
tor_1 | May 02 15:36:34.000 [notice] We were built to run on a 64-bit CPU, with OpenSSL 1.0.1 or later, but with a version of OpenSSL that apparently lacks accelerated support for the NIST P-224 and P-256 groups. Building openssl with such support (using the enable-ec_nistp_64_gcc_128 option when configuring it) would make ECDH much faster.
tor_1 | May 02 15:36:34.000 [notice] Bootstrapped 0%: Starting
scrapercompose_use_tor_1 exited with code 1
tor_1 | May 02 15:36:35.000 [notice] Bootstrapped 80%: Connecting to the Tor network
tor_1 | May 02 15:36:36.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
tor_1 | May 02 15:36:36.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
tor_1 | May 02 15:36:36.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
tor_1 | May 02 15:36:36.000 [notice] Bootstrapped 100%: Done
Apparemment, la commande nc -z tor 9050
ne renvoie pas le code d'état attendu 0
sur le use_tor
récipient. Cependant, il me semble que cela devrait fonctionner. Par exemple, si je modifie le tor
service de cartographie du port 9050
sur le conteneur vers l'hôte comme suit,
services:
tor:
build: ./tor
ports:
- "9050:9050"
Alors dans mon terminal ordinaire, je vois que nc -z localhost 9050
donne un code de sortie de 0
:
kurt@kurt-ThinkPad:~$ nc -z localhost 9050
kurt@kurt-ThinkPad:~$ echo $?
0
En bref, je m'attendrais à ce que le nom d'hôte tor
pour se comporter comme localhost
sur mon hôte après le mappage de port, mais cela ne semble pas être le cas. Pourquoi cela ne fonctionne-t-il pas ?