docker -составить открытые порты на удаленном контейнере - PullRequest
0 голосов
/ 09 апреля 2020

Я запускаю службу docker -compose удаленно на другом физическом компьютере в моей локальной сети через -H=ssh://user@192.168.0.x.

Я открываю порты, используя docker -compose:

    ports:
      - 8001:8001

Однако, когда я запускаю службу, порт 8001 не открывается моему локальному хосту. Я могу подключить sh к машине, на которой запущен контейнер, и порт 8001 действительно там прослушивает.

Как мне указать docker -создать туннель для этого порта с удаленной машины, на которой запущен контейнер, к моей местный docker клиент?

1 Ответ

1 голос
/ 09 апреля 2020

Docker не имеет возможности сделать это. Но с точки зрения вашего клиента s sh контейнер ничем не отличается от любой другой программы, работающей на удаленном хосте, и вы можете использовать опцию ssh -L для перенаправления локального порта в удаленную систему.

# Tell ssh to forward local port 8001 to remote port 8001
ssh -L 8001:localhost:8001 user@192.168.0.x \
  # Incidentally the remote port happens to be via a Docker container
  docker run -p 127.0.0.1:8001:8001 ...

Всякий раз, когда вы устанавливаете DOCKER_HOST или используете опцию docker -H, вы даете инструкции удаленному демону Docker, который интерпретирует их относительно себя. docker -H ... -v ... монтирует каталог в той же системе, что и демон Docker, в контейнер; docker -H ... -p ... публикует порт в той же системе, что и демон Docker. Docker не имеет возможности каким-либо образом учитывать содержимое или сетевой стек локальной системы при этом.

(Единственное исключение - docker -H ... build, которое фактически создает файл tar локального каталога и отправляет его по сети для использования в качестве контекста сборки, поэтому вы можете создать удаленный Docker демон для создания образа локального исходного дерева.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...