Как изменить порт по умолчанию для mysql -сервер docker изображения - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы запустить mysql / mysql -server изображение в 3 разных контейнерах на одном и том же хосте (конечная цель - запустить кластер innodb на хосте для демонстрационного проекта). И вместо использования сети моста и сопоставления портов я хочу, чтобы контейнеры запускались в режиме сети хоста.

Но, поскольку все 3 контейнера будут работать на одном хосте, я не могу использовать более одного контейнера, тот же порт хоста.

Это docker файл компоновки

version: '3'
services:
  mysql:
    image: mysql/mysql-server
    network_mode: "host"

Можно ли изменить docker файл компоновки для достижения моей цели? Любые указатели были бы очень полезны!

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Сетевое соединение с хостом почти никогда не требуется, и оно отключает некоторые основные функции Docker, такие как переназначение портов. Если вы удалите параметр network_mode: host, вы можете выбрать, какой порт хоста будет использоваться, вообще не изменяя базовый образ.

version: '3'
services:
  mysql:
    image: mysql/mysql-server
    ports:
      # You pick the first (host) port.
      # Second port is the port the container process uses,
      # and is usually fixed per image.
      - '3305:3306'

Сеть хоста также отключает нормальную связь между контейнерами, как описано в Составьте . Если вы специально не пытаетесь управлять сетью хоста или у вас действительно большое количество портов, которые вы слушаете (например, тысячи), вам следует использовать сеть по умолчанию («мост»). Единственным недостатком является то, что другие контейнеры не будут находиться на имени хоста localhost, но это должно быть просто вопросом предоставления соответствующей конфигурации вашей службе.

0 голосов
/ 13 июля 2020

Вы можете передать --port=3305 в command.

version: '3'
services:
  mysql:
    image: mysql/mysql-server
    network_mode: "host"
    command: --port=3305

...