2016-06-09 7 views
0

Я пытаюсь создать виртуализованную среду разработки в Windows, используя Vagrant и Docker (как и многие люди). Проблема в том, что я не могу подключиться (или я не понимаю, как это сделать) из MySQL Workbench, работающего на моем ноутбуке Windows, к моей базе данных MySQL в контейнере Docker в Boot2Docker. Вот как я представляю себе связь:Подключитесь к MySQL в контейнере докера (Vagrant на Windows/VirtualBox)

MySQL верстаке -> 3306 -> Boot2Docker -> 3306 -> Докер -> MySql

Однако я не могу подключиться к БД из MySQLWorkbench. Я попытался подключиться к хосту Boot2Docker 10.0.2.15 на 3306 и tcp поверх ssh с помощью закрытого ключа окна Boot2Docker «.vagrant \ machines \ dockerhost \ virtualbox \ id»

Что я делаю неправильно/что у меня есть? неправильно понятый.

Мои Vagrantfile: ENV [ 'VAGRANT_DEFAULT_PROVIDER'] = 'Докер'

DOCKER_HOST_NAME = "dockerhost" 
DOCKER_HOST_VAGRANTFILE = "./host/Vagrantfile" 

Vagrant.configure("2") do |config| 

    config.vm.network "forwarded_port", guest: 3306, host: 3306 

    config.vm.define "mysql" do |v| 
    v.vm.provider "docker" do |d| 
     d.image = "mysql" 
     d.env = { 
     :MYSQL_ROOT_PASSWORD => "root", 
     :MYSQL_DATABASE  => "dockertest", 
     :MYSQL_USER   => "dockertest", 
     :MYSQL_PASSWORD  => "docker" 
     } 
     d.ports =["3306:3306"] 
     d.remains_running = "true" 
     d.vagrant_machine = "#{DOCKER_HOST_NAME}" 
     d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}" 
    end 
    end 
end 

Мои хозяева/Vagrantfile (описание моего Boot2docker узла):

FORWARD_DOCKER_PORTS='true' 
Vagrant.configure(2) do |config| 


    config.vm.provision "docker" 

    # The following line terminates all ssh connections. Therefore 
    # Vagrant will be forced to reconnect. 
    # That's a workaround to have the docker command in the PATH 

    #Clear any existing ssh connections 
    ####NOTE: ps aux seems to give variable results depending on run -> process number can be ####first #or second causing provision to fail!!! 
    config.vm.provision "clear-ssh", type: "shell", inline: 
     "ps aux | grep 'sshd:' | awk '{print $1}' | xargs kill" 
#  "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill" 


    config.vm.define "dockerhost" 
    config.vm.box = "dduportal/boot2docker" 
    config.vm.network "forwarded_port",guest: 8080, host: 8080 


    config.vm.provider "virtualbox" do |vb| 
      vb.name = "dockerhost" 

    end 

end 
+0

Какое изображение Docker делает 'mysql' равным? Можете ли вы предоставить этот файл Docker или ссылку на изображение, которое вы используете на Docker Hub, пожалуйста? – ThatsNinja

+0

@ThatsNinja Это официальный файл докеры MySQL: [link] (https://hub.docker.com/_/mysql/) – AgentCormac

ответ

1

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

config.vm.network "forwarded_port", guest: 3306, host: 3306 

В докер-хозяин. MySQL Workbench на хосте Windows может затем подключиться к localhost: 3306.

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

  • Нет связанных вопросов^_^