如何使用VirtualBox和docker-machine创建基于Ubuntu的Docker主机?

5
我是一个新手,尝试使用docker-machine创建docker主机。目前,我使用VirutalBox进行试用环境。
当我使用docker-machine创建docker主机时,默认情况下,它会在VirtualBox上创建带有Boot2Docker的VM。但是我想在Virtualbox上创建一个基于Ubuntu 15.10的docker主机。
是否可以使用docker-machine在VirtualBox上创建基于Ubuntu的docker主机?
2个回答

8

OP没有说明他们如何使用通用驱动程序来解决问题,因此在这里我将说明一下我是如何做到的,以防有人感兴趣:

  1. 获取Ubuntu服务器ISO
  2. 在VirtualBox中创建一个虚拟机。 我称其为“Ubuntu模板”,因为我想在本地学习Swarm,所以我需要一个可以复制并快速获得后续机器的机器,而不是较长的初始设置。
  3. 在设置中为机器启用桥接网络,而不是NAT
  4. 启动机器并使用ISO安装Ubuntu。 在安装过程中,它会给您安装OpenSSH的选项。 选择该选项。 它还会要求您创建一个新用户。 我称其为“ubuntu”,密码为“ubuntu”。 您将多次使用此用户,因此请将凭据设置为易于记住的内容
  5. 安装完成后,切换到root:sudo su
  6. 使用passwd更改root的密码为易于记住的内容
  7. 生成密钥:ssh-keygen
  8. 使您刚生成的密钥授权:cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  9. 编辑文件/etc/ssh/sshd_config,并更改带有“PermitRootLogin”的行,以便它读取PermitRootLogin yes
  10. 重新启动SSH以激活更改:service ssh restart
  11. 运行ifconfig并注意机器的IP
  12. 在主机计算机上打开终端
  13. 运行(用您机器的IP替换):
    ssh root@10.10.10.89 'cat ~/.ssh/id_rsa' > ~/.ssh/docker_test
  14. 运行:
    ssh root@10.10.10.89 'cat ~/.ssh/id_rsa.pub' > ~/.ssh/docker_test.pub
  15. 运行(回到虚拟机中)shutdown now
  16. 在VirtualBox中克隆模板机器(选中重新初始化MAC地址复选框)。 我将其命名为ubuntu-1
  17. 启动新的虚拟机并运行echo 'ubuntu-1' > /etc/hostname然后运行reboot。 如果您要从相同的模板创建更多机器,则只需要这样命名它们:ubuntu-1、ubuntu-2等
  18. 运行ifconfig以查找克隆机器的IP
  19. 在主机机器上运行:
    docker-machine create --driver generic --generic-ip-address 10.10.10.90 --generic-ssh-key ~/.ssh/docker_test ubuntu-1
完成可能需要几分钟(主要是在“安装docker”步骤上),但之后您应该会拥有一个可用的基于Ubuntu的docker机器。您可以通过运行 docker-machine use ubuntu-1,然后运行 docker run hello-world 来验证其是否正常工作。
相比使用Boot2Docker,它需要更多的操作,但是在初始设置完成后,应该可以很好地工作。我还没有进行过太多测试,只是通过运行hello-world来验证它似乎可以工作,因此在使用Docker时可能会遇到更多类似的问题。
额外提示:VirtualBox允许您以无头模式运行机器。在初始设置和通过SSH允许root访问后,如果必要,通过SSH连接到机器可能更加方便,并且您可以关闭VB的GUI,从而使机器像后台服务一样运行。

1
使用创建的虚拟机的ssh-keygen并没有帮助,因为我的docker-machine在Windows中,并且无法识别在Linux中生成的ssh密钥。因此,我不得不在我的Windows安装中使用ssh-keygen。另外,在将生成的密钥传递给docker-machine.exe时,我必须使用/路径分隔符,而不是Windows默认的(\),否则它会失败。希望对某些人有所帮助...感谢@rafał-g提供的逐步解释。在网络上找不到类似的东西。也许在您的GitHub帐户上制作一个要点文件会很好。 - Farzan
我需要在我的机器上执行“chmod 600 ~/.ssh/docker_test*”,以便可以建立docker-machine ssh连接。 - Juan

2
“是否可以使用docker-machine在VirtualBox上创建基于Ubuntu的Docker主机?”
“是的,但不能直接使用docker-machine,因为它依赖于一个仅有30MB的TinyCore-based Linux发行版。”
“您可以尝试启动一个完整的Ubuntu虚拟机,并在其中按照Ubuntu上的常规docker安装过程进行安装。”

谢谢!我通过使用通用驱动程序解决了这个问题。 - takanabe
@takanabe 很好!你使用了哪个通用驱动程序? - VonC
嗨,@takanabe,你是怎么解决这个问题的?我也遇到了同样的问题。 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接