在Docker-compose中,没有看到其他服务的主机名

我正在尝试编写一个应用程序,在Docker多容器应用程序中使用Privoxy和Tor作为单独的服务。 名为apkmirror-scraper-compose的目录具有以下结构:

 . ├── docker-compose.yml ├── privoxy │  ├── config │  └── Dockerfile ├── scraper │  ├── Dockerfile │  ├── newnym.py │  ├── requirements.txt │  └── run.sh └── tor └── Dockerfile 

docker-compose.yml位置

 version: '3' services: privoxy: build: ./privoxy links: - tor tor: build: context: ./tor args: password: "foo" scraper: build: ./scraper links: - tor - privoxy 

tor目录中的Dockerfile

 FROM alpine:latest EXPOSE 9050 9051 RUN apk --update add tor RUN echo "ControlPort 9051" >> /etc/tor/torrc ARG password RUN echo "HashedControlPassword $(tor --quiet --hash-password $password)" >> /etc/tor/torrc CMD ["tor"] 

而在privoxy

 FROM alpine:latest EXPOSE 8118 RUN apk --update add privoxy COPY config /etc/privoxy/config CMD ["privoxy", "--no-daemon", "/etc/privoxy/config"] 

最后, scraperDockerfile

 FROM python:2.7-alpine ADD . /scraper WORKDIR /scraper COPY run.sh /scraper/run.sh RUN chmod +x /scraper/run.sh ENTRYPOINT /scraper/run.sh 

run.sh包含单行

 until nc -z tor 9050; do echo "Waiting for tor..." && sleep 1; done; 

基本上,使用nc -z命令,我正在等待端口号为9050的目标端口正在监听。 但是,如果我运行docker-compose build然后是docker-compose up ,我会看到以下内容:

 Starting apkmirrorscrapercompose_tor_1 Starting apkmirrorscrapercompose_privoxy_1 Creating apkmirrorscrapercompose_scraper_1 Attaching to apkmirrorscrapercompose_tor_1, apkmirrorscrapercompose_privoxy_1, apkmirrorscrapercompose_scraper_1 tor_1 | May 02 15:10:02.757 [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:10:02.757 [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:10:02.757 [notice] Read configuration file "/etc/tor/torrc". privoxy_1 | 2017-05-02 15:10:03.250 7fb755a28b48 Info: Privoxy version 3.0.24 privoxy_1 | 2017-05-02 15:10:03.250 7fb755a28b48 Info: Program name: privoxy tor_1 | May 02 15:10:02.781 [notice] Opening Socks listener on 127.0.0.1:9050 tor_1 | May 02 15:10:02.781 [notice] Opening Control listener on 127.0.0.1:9051 tor_1 | May 02 15:10:02.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip. scraper_1 | Waiting for tor... tor_1 | May 02 15:10:03.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6. tor_1 | May 02 15:10:03.000 [warn] You are running Tor as root. You don't need to, and you probably shouldn't. tor_1 | May 02 15:10:03.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:10:03.000 [notice] Bootstrapped 0%: Starting tor_1 | May 02 15:10:03.000 [notice] Bootstrapped 80%: Connecting to the Tor network tor_1 | May 02 15:10:04.000 [notice] Bootstrapped 85%: Finishing handshake with first hop tor_1 | May 02 15:10:04.000 [notice] Bootstrapped 90%: Establishing a Tor circuit tor_1 | May 02 15:10:04.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working. tor_1 | May 02 15:10:04.000 [notice] Bootstrapped 100%: Done scraper_1 | Waiting for tor... scraper_1 | Waiting for tor... scraper_1 | Waiting for tor... scraper_1 | Waiting for tor... scraper_1 | Waiting for tor... scraper_1 | Waiting for tor... 

Waiting for tor...无限期地继续下去。

据我所知,从https://docs.docker.com/compose/compose-file/#links ,“链接服务的容器将是可访问的主机名相同的别名,或服务的名称,如果没有指定别名”。 由于我没有指定别名,主机名应该是tor ,对吗? 有人可以解释为什么这是行不通的?