docker: повторно использовать сетевой стек другого контейнера и подключиться к нему - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь использовать bubuntux / nordvpn для предоставления VPN другим контейнерам.Я пытаюсь заставить работать следующие настройки:

  1. Использование bubuntux / nordvpn для определения vpn службы
  2. Определение контейнера foo с использованием network_mode: service:vpn для доступаИнтернет
  3. Определите другой контейнер bar, также использующий network_mode: service_vpn для доступа в Интернет

Пока что это работает как шарм - однако, теперь я хотел бы сделатьfoo и bar могут соединяться друг с другом (например, так что bar может запускать curl http://foo, и это будет работать), при этом все еще используя vpn для соединений с внешней стороной.Можно ли это сделать?

Вот простая демонстрационная программа docker-compose (необходимо ввести только имя пользователя и пароль nordvpn):

version: "2"

services:

  vpn:
    image: 'bubuntux/nordvpn'
    cap_add:
      - NET_ADMIN
    devices:
      - "/dev/net/tun"
    ports:
      - 8080:80   # foo
    environment:
      USER: "XXXXX"
      PASS: "YYYYY"
      COUNTRY: "ch"
      CATEGORY: "P2P"
      OPENVPN_OPTS: "--inactive 3600 --ping 10 --ping-exit 60"
      NETWORK: "192.168.0.0/24"
    restart: "unless-stopped"


  foo:
    image: 'nginx'
    network_mode: service:vpn

  bar:
    image: 'giantswarm/tiny-tools'
    network_mode: service:vpn
    command: "/bin/sh -c 'while sleep 1; do curl -sS http://foo/; done'"

Команда curl из bar не будет выполнена:

bar_1  | curl: (6) Could not resolve host: foo
bar_1  | curl: (6) Could not resolve host: foo
...

Как мне сделать эту работу?

...