我如何使用 docker-machine 和 VirtualBox 创建基于 ubuntu 的 docker 主机?
How can I create ubuntu based docker host by using docker-machine with VirtualBox?
我是 docker 的新手,并尝试使用 docker-machine 创建 docker 主机。
目前试用环境使用VirutalBox。
当我使用 docker-mahine 创建 docker 主机时,它默认在 VirtualBox 上使用 Boot2Docker 创建了 VM。但是我想在 Virtualbox 上用 Ubuntu 15.10 创建一个 docker 主机。
是否可以使用 docker-machine 在 VirtualBox 上创建基于 Ubuntu 的 docker 主机?
Is it possible to use docker-machine for creating Ubuntu based docker host on VirtualBox?
是的,但不能直接使用 docker-machine,它仅依赖 TinyCore-based linux 30 Mo 的分配。
您可以尝试启动一个完整的 Ubuntu 虚拟机,并在其中 follows the regular docker installation for Ubuntu。
OP 没有描述他们如何使用通用驱动程序来解决他们的问题,所以我是这样做的,以防有人感兴趣:
- 获取Ubuntu Server ISO
- 在 VirtualBox 中创建一台机器。我叫我的 "Ubuntu template" 是因为我想在本地学习 Swarm,所以我想要一台能够复制并在较长的初始设置后快速获得后续机器的机器。
- 在设置中为机器启用桥接网络而不是 NAT
- 启动机器并使用 ISO 安装 Ubuntu。在安装过程中,它会给你一个安装 OpenSSH 的选项,select 那个选项。它还会要求您创建一个新用户。我用密码 "ubuntu" 打给了我的 "ubuntu"。您将多次使用此用户,因此请将凭据设置为容易记住的内容
- 安装完成后,切换到root:
sudo su
- 使用
passwd
将 root 的密码更改为容易记住的密码
- 生成密钥:
ssh-keygen
- 对刚刚生成的密钥进行授权:
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
- 编辑文件
/etc/ssh/sshd_config
并更改带有 "PermitRootLogin" 的行,使其显示为 PermitRootLogin yes
- 重新启动 SSH 以激活更改:
service ssh restart
- 运行
ifconfig
并记下机器的IP
- 在主机上打开终端
- 运行(替换你机器的IP):
ssh root@10.10.10.89 'cat ~/.ssh/id_rsa' > ~/.ssh/docker_test
- 运行:
ssh root@10.10.10.89 'cat ~/.ssh/id_rsa.pub' > ~/.ssh/docker_test.pub
- 运行(返回虚拟机)
shutdown now
- 在 VirtualBox 中,克隆模板机器(选中复选框以重新初始化 MAC 地址)。我将我的命名为 ubuntu-1
- 启动新的虚拟机,然后 运行
echo 'ubuntu-1' > /etc/hostname
然后 reboot
。仅当您要从同一模板创建更多机器时才需要这样做,然后将它们命名为 ubuntu-1、ubuntu-2 等等
- 运行
ifconfig
找出克隆机器的IP
- 在您的主机上 运行:
docker-machine create --driver generic --generic-ip-address 10.10.10.90 --generic-ssh-key ~/.ssh/docker_test ubuntu-1
可能需要几分钟才能完成(主要是在 "Installing docker" 步骤),但您应该有一台基于 Ubuntu 的 docker 机器。您可以通过 运行ning docker-machine use ubuntu-1
然后 docker run hello-world
验证它是否有效
它比使用 Boot2Docker 更复杂,但在初始设置后它应该非常可行。我还没有对它做太多,我只是通过 运行ning hello-world 验证它似乎可以工作,所以可能会有更多的陷阱,就像 Docker 经常遇到的那样。
额外提示:VirtualBox 允许您 运行 机器处于无头模式。在初始设置并允许通过 SSH 进行 root 访问之后,运行 机器无头并在必要时通过 SSH 连接到它们可能会更方便,您可以关闭 VB 的 GUI 并且机器是现在 运行在后台运行类似服务。
我是 docker 的新手,并尝试使用 docker-machine 创建 docker 主机。
目前试用环境使用VirutalBox。
当我使用 docker-mahine 创建 docker 主机时,它默认在 VirtualBox 上使用 Boot2Docker 创建了 VM。但是我想在 Virtualbox 上用 Ubuntu 15.10 创建一个 docker 主机。
是否可以使用 docker-machine 在 VirtualBox 上创建基于 Ubuntu 的 docker 主机?
Is it possible to use docker-machine for creating Ubuntu based docker host on VirtualBox?
是的,但不能直接使用 docker-machine,它仅依赖 TinyCore-based linux 30 Mo 的分配。
您可以尝试启动一个完整的 Ubuntu 虚拟机,并在其中 follows the regular docker installation for Ubuntu。
OP 没有描述他们如何使用通用驱动程序来解决他们的问题,所以我是这样做的,以防有人感兴趣:
- 获取Ubuntu Server ISO
- 在 VirtualBox 中创建一台机器。我叫我的 "Ubuntu template" 是因为我想在本地学习 Swarm,所以我想要一台能够复制并在较长的初始设置后快速获得后续机器的机器。
- 在设置中为机器启用桥接网络而不是 NAT
- 启动机器并使用 ISO 安装 Ubuntu。在安装过程中,它会给你一个安装 OpenSSH 的选项,select 那个选项。它还会要求您创建一个新用户。我用密码 "ubuntu" 打给了我的 "ubuntu"。您将多次使用此用户,因此请将凭据设置为容易记住的内容
- 安装完成后,切换到root:
sudo su
- 使用
passwd
将 root 的密码更改为容易记住的密码
- 生成密钥:
ssh-keygen
- 对刚刚生成的密钥进行授权:
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
- 编辑文件
/etc/ssh/sshd_config
并更改带有 "PermitRootLogin" 的行,使其显示为PermitRootLogin yes
- 重新启动 SSH 以激活更改:
service ssh restart
- 运行
ifconfig
并记下机器的IP - 在主机上打开终端
- 运行(替换你机器的IP):
ssh root@10.10.10.89 'cat ~/.ssh/id_rsa' > ~/.ssh/docker_test
- 运行:
ssh root@10.10.10.89 'cat ~/.ssh/id_rsa.pub' > ~/.ssh/docker_test.pub
- 运行(返回虚拟机)
shutdown now
- 在 VirtualBox 中,克隆模板机器(选中复选框以重新初始化 MAC 地址)。我将我的命名为 ubuntu-1
- 启动新的虚拟机,然后 运行
echo 'ubuntu-1' > /etc/hostname
然后reboot
。仅当您要从同一模板创建更多机器时才需要这样做,然后将它们命名为 ubuntu-1、ubuntu-2 等等 - 运行
ifconfig
找出克隆机器的IP - 在您的主机上 运行:
docker-machine create --driver generic --generic-ip-address 10.10.10.90 --generic-ssh-key ~/.ssh/docker_test ubuntu-1
可能需要几分钟才能完成(主要是在 "Installing docker" 步骤),但您应该有一台基于 Ubuntu 的 docker 机器。您可以通过 运行ning docker-machine use ubuntu-1
然后 docker run hello-world
它比使用 Boot2Docker 更复杂,但在初始设置后它应该非常可行。我还没有对它做太多,我只是通过 运行ning hello-world 验证它似乎可以工作,所以可能会有更多的陷阱,就像 Docker 经常遇到的那样。
额外提示:VirtualBox 允许您 运行 机器处于无头模式。在初始设置并允许通过 SSH 进行 root 访问之后,运行 机器无头并在必要时通过 SSH 连接到它们可能会更方便,您可以关闭 VB 的 GUI 并且机器是现在 运行在后台运行类似服务。