这次我想谈一谈不专门针对 InterSystems IRIS 的东西,不过如果你想使用 Docker,并且你工作环境是安装了 Windows 10 专业版或企业版的 PC 或笔记本电脑,那么我认为这个很重要。
你可能知道,容器技术基本上来自于 Linux 世界,如今在 Linux 主机上发挥出最大潜能。 那些平常使用 Windows 的人会看到,Microsoft 和 Docker 在过去的几年做出了重要的努力,让我们可以在 Windows 系统上以非常简单的方式运行基于 Linux 映像的容器... 但是生产系统不支持这种方式,这是个大问题,如果我们要将持久性数据保留在主机系统中的容器之外,这样做非常不可靠... 这主要是由于 Windows 和 Linux 文件系统之间的巨大差异导致的。 最终,Docker for Windows 自身使用了一个小型 linux 虚拟机 (_MobiLinux) 来运行容器... 此操作对于 Windows 用户是透明的,而且效果完美,只要你不需要你的数据库比容器存活的时间更长...
好了,我们进入正题,很多时候为了避免出现问题和简化操作,我们需要一个完整的 Linux 系统,而且如果我们的服务器基于 Windows,那么唯一的方法就是通过虚拟机来实现。 至少在 Windows 中的 WSL2 发布之前是这样,但发布后就是另一回事了,不过它要变得足够强大稳定肯定还需要一些时间。
在本文中,我将一步一步告诉你如何在 Windows 服务器中的 Ubuntu 系统上安装一个能使用 Docker 容器进行工作的环境。 我们开始吧...
1. 启用 Hyper-V
如果尚未启用,则转到添加 Windows 功能
并启用 Hyper-V。 你将需要重启(图片上的文本是西班牙语,但这就是我当前的区域设置。 如果你不懂堂吉诃德的语言,我希望加上说明能帮助你“解密”)
2. 在 Hyper-V 上创建一个 Ubuntu 虚拟机
我认为创建虚拟机 (VM) 没有更简单的方法了。 只需打开 Hyper-V 管理器
的窗口,然后转到选项快速创建...(屏幕的右上角),使用已经提供的任一 Ubuntu 版本来创建你的虚拟机(你可以下载任何其他 Linux 的 iso 文件,创建不同发行版的虚拟机)。 在我的示例中,我选择了最新的 Ubuntu 版本:19.10。 不过,你在这里看到的一切内容也都适用于 18.04。 在 15 或 20 分钟内,具体取决于你下载映像花费的时间,新的虚拟机就创建完毕并准备就绪。
3. 创建本地子网
使用虚拟机经常遇到的问题之一与网络配置有关... 有时有效,有时无效,或者连接 Wi-Fi 时有效,但连接网线就无效,或者是相反情况;或者如果我在 Windows 主机中建立一个 VPN,那么在虚拟机中就无法访问互联网,或者是虚拟机 (Linux) 和主机 (Windows) 之间的通信中断... 总之,非常让人抓狂! 这使得我在使用笔记本电脑进行开发、小型快速演示或展示时无法信任我的环境,而在这些场景下访问互联网很可能不如确保在主机与虚拟机之间进行可靠通信来得重要。
在 Windows 主机和虚拟机之间共享一个临时本地子网,可以解决这个问题。 要让它们互相通信,使用该子网就可以了。 你只需要为主机和虚拟机分配特定 IP 即可。
通过以下步骤可以很容易实现。 只需转到虚拟交换机管理器...,你可以在 Hyper-V 管理器
中找到:
然后,转到选项新建虚拟交换机(之后就像虚拟机的新网卡一样):
确保将其定义为内部网络,选择我们想要的名称,其他选项保持默认
现在,如果转到 Windows 控制面板 --> 网络和共享中心
,我们会看到那里已经有了我们刚才创建的交换机:
4. 配置主机和虚拟机共享的本地子网
此时,你可以完成新的本地网络的配置。 为此,将光标放在连接 Mi Nuevo Conmutador LOCAL 上,单击并转到属性,再转到 IPv4 协议,以便分配一个固定 IP 地址:
5. 将新的本地网络链接并配置到虚拟机
现在回到 Hyper-V 管理器
。 如果虚拟机正在运行,将其停止。 停止后,转到其配置并添加新的内部虚拟交换机:
(注意:在图片上可以看到另一个交换机 Hyper-V Conmutador INTERNO。 它用于我的另一个子网。 此配置中不需要它)
单击“添加”后,你只需选择先前创建的交换机:
好了,完成此操作后,依次单击“应用”、“接受”... 一切就绪!你只需启动并再次登录虚拟机即可完成内部连接的配置。 为此,在虚拟机启动后,单击网络图标(右上角),你将看到两个网络:eth0 和 eth1。 eth1 目前显示为断开连接:
进入以太网 (eht1) 的配置,并为此本地子网分配一个固定 IP,例如:155.100.101.1,子网掩码:255.255.255.0
这样就完成了。 你的虚拟机标识为 IP 155.100.101.1,与主机共享同一子网。
7. 允许从虚拟机访问 Windows 10
你可能会发现 Windows 10 默认不允许其他服务器连接,对于 Windows 系统来说,你刚刚创建的虚拟机正是一个可能存在危险的外部服务器。因此,必须在防火墙中添加规则,才能从这些虚拟机连接到主机。 如何操作? 非常简单,只需在 Windows 控制面板
中查找 Windows Defender 防火墙
,转到高级配置,然后创建一条新的入站规则:
你可以设置一个端口或者一个或多个端口范围...(也可以设置针对所有端口的规则)...
我们需要的操作是允许连接...
用于所有网络类型...
为规则指定名称...
这里很重要,指定名称后要立即再次打开新创建的规则的属性并限制应用程序范围,以便只应用于本地子网内的连接...
8. 就绪。 在新的 Ubuntu 虚拟机中安装 Docker 和任何其他应用程序
完成整个安装过程后,新虚拟机即就绪且为最新,并可以访问互联网等等。 你可以安装所需的应用程序... 至少要安装 Docker,这是一开始就有的想法,如果你需要连接公司网络,还可以安装 VPN 客户端,还有 VS Code、Eclipse+Atelier 等等。
具体来说,要在虚拟机中安装 Docker,可以按照以下说明进行操作:https://docs.docker.com/install/linux/docker-ce/ubuntu/
确保 Docker 运行时正在工作,下载一些测试映像等等... 仅此而已。
这样... 你已完成所有工作!,现在你将能够在 Ubuntu 虚拟机中无限制(除了硬件能力限制)运行容器,你可以从 Windows 10 主机、浏览器或应用程序连接到虚拟机,以及反过来从 Ubuntu 虚拟机连接到 Windows 10 主机。 所有使用你在共享本地子网中设置的 IP 地址的操作都将有效,无论是否建立 VPN,是通过 Wi-fi 适配器还是通过以太网电缆接入互联网。
啊... 最后一个建议。 如果要在 Windows 10 和虚拟机之间交换文件,一个非常有用且简单的选项是使用 WinSCP。 它是免费的,而且非常好用。
当然,还有其他配置,但这是我使用的配置,已经证明是比较可靠的。 希望你也觉得它有用。 如果我帮助你避免了令人头疼的问题,这篇文章就值了。
编码愉快!