2015-08-21 3 views
4

Я пытаюсь запустить сервер mysql на контейнере Docker (установленном с Docker Toolbox для Mac) и получить доступ к нему с моей машины под управлением OS X Yosemite. Документация из официального репо не объясняет, как подключиться извне хост-докера!Подключение к mysql, запущенному в контейнере Docker

Я создал контейнер, используя official repository следующим образом:

$ docker pull mysql 
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest 
$ docker inspect CONTAINER_ID 

Тогда я получаю IP-адрес (172.17.0.1), но когда я свистеть это я вижу тайм-аутов !!! Каким образом можно подключиться к запущенному серверу mysql?

ответ

2

Он говорит:

Это изображение предоставляет стандартный порт MySQL (3306), поэтому контейнер сшивание делает экземпляр MySQL доступным для других контейнеров приложений

Во-первых, убедитесь, что ваш докер запустить карту что порт: -p 3306:3306 (или the exposed port from the Dockerfile не будет доступен с хоста Linux)

Затем вам нужно

  • либо добавить port forwarding rule to your VirtualBox VM, а также доступ 127.0.0.1:3306,

    VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306"; 
    
  • или получить доступ к boot2docker В.М. IP-адрес $(boot2docker ip), используя порт 3306.

После discussion, оказалось, что добавление отображения портов на конце неверно:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest -p 3306:3306 

Это не работает, потому что «-p 3306: 3306» просто интерпретируется как аргументы для перехода к команде ENTRYPOINT.

Это работает (что означает докер пс -a показывает контейнер, как "работает", а не "вышел"):

docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest 

Тогда [email protected]:3306 или [email protected]$(docker-machine ip):3306 должен быть правильным.

+2

Я не использую boot2docker, но новый Docker Toolbox – bachr

+0

@elsoufy та же идея: есть еще виртуальная машина. Плюс, если порт не отображается на прогон докера, он все равно не будет доступен. – VonC

+0

Похоже, что это работает, но у меня есть запрещенный доступ для «root». Думаю, мне нужно гарантировать удаленный доступ! – bachr

Смежные вопросы