Использовать Docker-контейнер в качестве SSH-туннеля внутри сети. - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь использовать докер-контейнер для настройки SSH-туннеля к удаленной базе данных, доступной только через SSH.У меня есть сеть докеров с несколькими контейнерами, и я хочу сделать базу данных доступной для всех контейнеров в сети.

Файл Docker для контейнера SSH выглядит следующим образом:

FROM debian:stable

RUN apt-get update && apt-get -y --force-yes install openssh-client autossh postgresql-client

COPY .ssh /root/.ssh
RUN chown root:root /root/.ssh/config

EXPOSE 12345
ENTRYPOINT ["/usr/bin/autossh", "-M", "0", "-v", "-T", "-N", "-4", "-L", "12345:localhost:1234", "user@remotedb" ]

ВнутриДиректория .ssh - это мои ключи и файл конфигурации, который выглядит следующим образом:

Host remotedb
    StrictHostKeyChecking   no
    ServerAliveInterval     30
    ServerAliveCountMax     3

Сам туннель работает с этим контейнером, то есть я могу получить доступ к БД из него как localhost: 12345.

Теперь я хочу получить к нему доступ также из других контейнеров в той же сети.

Мой docker-compose.yml выглядит следующим образом (я закомментировал некоторые испытания):

version: '2'

networks:
  my_network:
    driver: bridge
    ipam:
     config:
       - subnet: 10.12.0.0/16
         gateway: 10.12.0.1

services:
  service_1:
    image: my/image:alias
    volumes:
      - somevolume
#   links:
#      - my_ssh
    ports:
      - "8080"    
    environment:
      ENV1: blabla
    networks:
      my_network:
         ipv4_address: 10.12.0.12

  my_ssh:
    build:
      context: ./dir_with_Dockerfile
#   ports:
#     - "23456:12345"
    expose:
      - "12345"
    networks:
      my_network:
         ipv4_address: 10.12.0.13

Я пытался получить доступ к удаленной базе данных изнутри service_1 с именами хостов «my_ssh», ipv4_address, «localhost» и с портами 12345 и 23456. Ни одна из этих комбинаций не сработала.Где я могу пойти не так?

Или как еще я могу установить постоянное соединение из своих контейнеров с удаленной базой данных?

1 Ответ

0 голосов
/ 08 июня 2018

Больше предложений, чем ответа;настройка OpenVPN в сети базы данных и ваш док-сервер позволят вам соединить две сети вместе.Это также облегчит вам настройку большего количества хостов в будущем.

...