从vagrant virtualbox

时间:2016-06-15 09:39:31

标签: docker vagrant virtualbox boot2docker

我在Mac OS X上运行Vagrant和Virtualbox。我使用Virtualbox提供程序(some_centos机器)创建了一个流浪盒,使用docker provider创建了第二个框。您将在下面看到泊坞窗定义。

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

两台机器都启动了,但我想要做的是通过使用mysql客户端连接到它,从“some_centos”主机访问该mysql docker机器。不幸的是我失败了。请注意,在Mac OS上使用vagrant docker provider时,它将创建boot2docker iamge,然后创建docker。不知道如何解决这个问题,例如我可以ssh到“some_centos”,但不能运行mysql -h“docker-host”-uroot -p。

2 个答案:

答案 0 :(得分:0)

我找到了解决方法。因此,在MAC OS X上看起来您还需要在该虚拟机上进行端口转发,但需要手动进行。所以你需要运行以下内容:

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

然后我能够做mysql。所以我需要将这个shell配置器添加到我的Vagrantfile中。

答案 1 :(得分:0)

基本上,您需要进行双端口转发。首先,将容器端口转发到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将被转发到vagrant的端口8080,而vagrant的端口8080将转发到主机端口1200.

我希望这张图片会有所帮助:

docker-vagrant-port-forwarding