Установите конкретный IP или имя для моего компьютера docker

#docker #docker-compose

#docker #docker-создать

Вопрос:

Есть ли какой-либо способ установить либо IP, либо, в идеале, идентификатор и имя хоста в моем файле hosts в моем файле docker-compose.yml? На данный момент я подключаюсь по SSH к своей базе данных docker через SequelPro, но если я запускаю более одной машины, я получаю разные IP, которые мне затем нужно каждый раз обновлять в SequelPro.

В идеале я не могу иметь возможность docker-compose up -d , а затем иметь возможность посещать myproject.domain.com сразу, без необходимости каждый раз находить выделенный IP и изменять мой файл хоста или беспокоиться о том, что выделенный IP отличается.

Возможно ли это?

Ответ №1:

У вас есть несколько вариантов; какой из них лучше, действительно зависит от ваших конкретных потребностей. Вы говорите, что подключаетесь к своему контейнеру через SSH, но это звучит как обходной путь для чего-то: предположительно, ваш контейнер Docker предлагает какой-то полезный сервис, отличный от ssh, и это то, к чему вам на самом деле нужен доступ.

Самое простое решение — просто предоставить сетевой порт для этой службы на вашем хосте, используя директиву ports в вашем docker-compose.yaml файле. Если вам просто нужен локальный доступ, вы можете сделать что-то вроде:

 ports:
  - "127.0.0.1:8001:8001"
  

Это предоставило бы контейнерный порт 8001 как порт 8001 на вашем локальном хосте. Если вам нужен внешний доступ к сервису (то есть доступ из какого-либо места, отличного от хоста docker), вы могли бы предоставить порт в интерфейсе хоста:

 ports:
  - "8001:8001"
  

В этом случае вы могли бы получить доступ к сервису как <your_host_name_or_ip>:8001 .

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