Ответ 1
Вероятно, ваша проблема связана с использованием dockertoolbox или dhingy/dlite или чего-то еще, обеспечивающего полноценную Linux-версию Linux, которая затем размещает докеры для запуска вашего контейнера внутри этой виртуальной машины. У этой виртуальной машины, конечно же, свой собственный сетевой стек и собственный IP-адрес на хосте, и это были ваши инструменты, которые будут иметь проблемы. Открытые порты контейнера не подвергаются воздействию OSX host localhost
, а скорее OSX Docker-VM-ip
.
Чтобы решить эти проблемы элегантно
Экспортировать порты в OSX localhost
из контейнера
- Сначала используйте /install docker-for-mac https://docs.docker.com/engine/installation/mac/ вместо dockertoolbox или других. Он основан на специальном стеке xhyve, который повторно использует сетевой стек ваших хостов.
- когда вы сейчас выполняете
docker run -p 3306:3306 percona
, он привяжет 3306 кosx-host-localhost
, поэтому каждый другой инструмент osx, пытающийся подключиться к localhost: 3306, будет работать (очень полезен) так же, как вы привыкли к нему, когда вы установили mysql с помощьюbrew install mysql
или аналогично - Если у вас возникли проблемы с производительностью с использованием общих ресурсов ОС OSX с контейнерами докеров, отметьте http://docker-sync.io - он совместим с docker-for-mac (подсказка: я смещен на этом)
Экспорт портов с OSX-хоста в хранилище
В действительности вы ничего не экспортируете, вы скорее сделаете их доступными в целом из всех контейнеров (все порты OSX-host-localhost)
Если вы хотите прикрепить к порту, который вы предлагаете на хосте OSX, из контейнера, например. во время сеанса xdebug ваша среда IDE прослушивала порт 9000 на OSX-host-localhost, а контейнер с FPM/PHP должен прикрепить к этому osx-localhost: 9000 на mac, вам нужно сделать это: https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c
Итак, вы создаете фиктивный loopback ip, так что вы можете получить доступ к своим портам OSX-хоста из контейнеров без использования 10.254.254.254:9000 - это переносимо и в основном дает вам все, что вам нужно для разработки, как вы привыкли к
Итак, вы даете возможность подключения к портам, открытым контейнерам, для приложений, работающих на Mac, и пытающихся подключиться к localhost: порт
И второй обратный, если что-то в контейнере хочет подключиться к порту на хосте.