4

私は、dnsmasq コンテナーに接続された openvpn コンテナーを起動する docker-compose 構成に取り組んでいます。openvpn サーバーは自動的に dnsmasq コンテナーを検出し、それを dns サーバーとして使用する必要があります。検出は、/etc/hosts ファイルでエントリ「dnsmasq」を検索することによって行われます。

次の docker-compose.yml ファイルがあります。

version: '2'
services:
  data:
    build: ./
  dnsmasq:
    cap_add:
      - NET_ADMIN
    hostname: dnsmasq
    image: <dnsmasq image>
    ports:
      - 53:53/udp
    restart: always
  openvpn:
    cap_add:
      - NET_ADMIN
    depends_on:
      - data
      - dnsmasq
    image: <openvpn image>
    ports:
      - 1194:1194/udp
    restart: always
    volumes_from:
      - data

dnsmasq コンテナーのホスト名として「dnsmasq」を指定し、それが openvpn コンテナーの「/etc/hosts」に表示されることを期待しています。これは起こらないようです。

これは、openvpn コンテナー内の /etc/hosts からのダンプです。

openvpn_1  | 127.0.0.1  localhost
openvpn_1  | ::1    localhost ip6-localhost ip6-loopback
openvpn_1  | fe00::0    ip6-localnet
openvpn_1  | ff00::0    ip6-mcastprefix
openvpn_1  | ff02::1    ip6-allnodes
openvpn_1  | ff02::2    ip6-allrouters
openvpn_1  | 172.19.0.4 d44a72f42ef9

d44a72f42ef9 は「dnsmasq」になると思います。

私は何を間違っていますか?

docker-compose 1.8.1 を実行しています。

4

3 に答える 3

5

古いバージョンの docker でのリンクは、/etc/hosts に追加することで機能していました。システムが最初にこのパラダイムの下でセットアップされ、コンテナーの解決を取得する方法が /etc/hosts に組み込まれた可能性があります。

ただし、docker の新しいバージョンではこれは必要ありません。コンテナーが同じネットワーク上にある限り、サービス名の解決が自動的に許可されます。したがって、次の方法でアクセスできます。

http://dnsmasq:port
于 2016-10-22T16:26:58.283 に答える
0

どうやら、ホスト ファイルは更新されません。ホスト「dnsmasq」は、他の異なるメカニズムを使用して利用できます。これは、次を使用して確認できます。

ping -c1 dnsmasq

于 2016-10-22T14:19:00.363 に答える