Доступ к докеру vagrant провайдера из vagrant virtualbox

Я использую Vagrant и Virtualbox на Mac OS X. Я создал один блок vagrant с помощью поставщика Virtualbox (машина some_centos) и второй блок с помощью поставщика docker. Ниже вы увидите определение докера.

config.vm.define "mysql" do |m|
    m.vm.hostname = "mysql-host"
    m.vm.synced_folder ".", "/vagrant", disabled: true
    m.ssh.insert_key = false
      m.ssh.username = 'docker'
      m.ssh.password = 'tcuser'
      m.vm.network "public_network", use_dhcp_assigned_default_route: true

m.vm.provider "docker" do |docker|

  # Specify the Docker image to use
  docker.image = "mysql/mysql-server"

  # Specify port mappings
  # If omitted, no ports are mapped!

  docker.create_args = ["-p", "3306:3306","-e","MYSQL_ROOT_PASSWORD=password", "-e", "MYSQL_DATABASE=database"]

  # Specify a friendly name for the Docker container
  docker.name = 'mysql-server-container'

  #We want to keep it running.
  docker.remains_running = true
end

конец

Обе машины запускаются, но я хочу получить доступ с хоста "some_centos" к этой машине с док-станцией mysql, используя для этого клиент mysql. К сожалению, я терплю неудачу. Имейте в виду, что в Mac OS при использовании провайдера vagrant docker он создаст boot2docker iamge, а затем создаст docker. Не уверен, как решить эту проблему, например, я могу ssh войти в "some_centos", но не могу запустить mysql -h "docker-host" -uroot -p.

2 ответа

Решение

По сути, вам нужно иметь двойную переадресацию портов. Сначала вы перенаправляете порт контейнера в Vagrant, а затем порт vagrant в порт Mac.

При запуске вашего Docker-контейнера используйте код, подобный следующему:

docker container run -d --name nginx-test -p 8080:80 nginx

В своем файле Vagrant добавьте эту строку над концом:

config.vm.network "forwarded_port", guest: 8080, host: 1200

Таким образом, порт 80 контейнера будет перенаправлен на порт 8080 vagrant, а порт 8080 vagrant будет перенаправлен на порт 1200 хоста.

Я надеюсь, что это изображение поможет:

докер-бродяга-переадресации портов

Я нашел обходной путь для этого. Таким образом, похоже, что в MAC OS X вам также необходимо выполнить переадресацию портов на этой виртуальной машине, но вручную. Так что вам нужно запустить следующее:

VBoxManage controlvm name_of_your_virtual_machine natpf1 "mysql,tcp,,3306,,3306""

Тогда я смог сделать MySQL. Поэтому мне нужно добавить этот поставщик оболочки в мой Vagrantfile.

Другие вопросы по тегам