Доступ к докеру 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.