2015-04-09 4 views
2

Я новичок в докере. Я пошел по учебникам здесь https://www.youtube.com/watch?v=Pe6a8Jbvi9E, чтобы создать сайт WordPress с докере. Он объясняет о переадресации порта с помощью следующей команды,Пересылка порта с докером для wordpress

docker run --link=my_mysql:mysql -p 80:80 -d wordpress 

По моему разумению, это будет перенаправлять все запросы на порту 80 хоста к порту 80 контейнера. Но как это будет связываться с портом 3306 mysql? А также в том, что данные базы данных учебника не установлены нигде для wordpress, чем от того, откуда берутся значения конфигурации db? Может кто-нибудь объяснить? Извините, если это очень простые вопросы.

ответ

3

Но как это будет связываться с портом 3306 mysql?

wordpress контейнер будет взаимодействовать с mysql контейнером, потому что это то, что ссылка позволяет: (см Linking Containers Together)

ссылки позволяют контейнеры обнаружить друг друга и надежно передавать информацию о одной емкости в другую контейнер. Когда вы создаете ссылку, вы создаете канал между контейнером-источником и контейнером-получателем.

Так порт 3306 не воздействию хозяина (как и 80 порта), но видна wordpress контейнера.

Docker создает безопасный туннель между контейнерами, который не должен выставлять порты снаружи на контейнере; вы заметите, что когда мы запустили контейнер db, мы не использовали флаги -P или -p.
Это большое преимущество связывания: нам не нужно выставлять исходный контейнер, вот база данных mysql, в сеть.

Docker определяет набор переменных окружения для каждого порта, открытого контейнером-источником.
Каждая переменная имеет уникальный префикс в виде:

<name>_PORT_<port>_<protocol> 

Компоненты данного префикса являются:

  • псевдоним <name>, указанный в параметре --link (например, MySQL)
  • <port> номер выставлен
  • a <protocol>, который является либо TCP, либо UDP
Смежные вопросы