Logo
Section 1 / 10

生产环境类似

学习如何创建虚拟机。

导入

生产环境类似

学习如何创建虚拟机。

本章内容概览

我们距离生产环境部署已经非常接近了。在上一章中,我们已将应用程序配置为可在生产环境中运行,并且也已将镜像推送至 Docker Hub。

但在设置基于云的基础设施并进行部署之前,先在本地进行一次模拟部署是个不错的选择。在本章中,我们将讨论虚拟化技术,特别是 VirtualBox,以创建一个可模拟生产环境的虚拟基础设施。

我们将学习如何:

  • 创建一个单节点集群,能够运行 Docker 容器;
  • 部署应用程序;
  • 扩展应用,在单个实例上运行多个副本。

在此过程中,我们还将深入了解 Docker 提供的其他工具,这些工具可用于创建基础设施、部署和管理生产应用。这些技能将直接适用于基于云的基础设施操作。

注意: 由于我们的平台不支持虚拟机(VM)的创建,因此我们仅分享如何构建类似生产环境的流程。

创建机器

要将我们的应用程序部署到生产环境,我们需要有可部署的目标。这意味着需要具备运行代码能力的基础设施,即机器实例。

目前有许多工具可用于创建和配置基础设施。但由于本课程聚焦于 Docker,我们将使用 Docker 自带的工具 Docker Machine 来处理这一任务。

Docker Machine

Docker Machine 是一个命令行工具,可为我们创建 Docker 就绪的实例。它采用适配器模式,提供多种不同的驱动程序,能够在不同平台上创建实例。这意味着无论我们是在本地机器上运行虚拟实例,还是在云端部署,都可以使用相似的命令来创建实例。

创建虚拟机的命令

VirtualBox 允许我们在本地运行实例。在 VirtualBox 启动后,可通过以下命令创建一个用于运行应用的新虚拟机:

1$ docker-machine create --driver virtualbox local-vm-1 2 3Running pre-create checks... 4Creating machine... 5(local-vm-1) Copying /Users/rob/.docker/machine/cache/boot2docker.iso to 6/Users/rob/.docker/machine/machines/local-vm-1/boot2docker.iso... 7(local-vm-1) Creating VirtualBox VM... 8(local-vm-1) Creating SSH key... 9(local-vm-1) Starting the VM... 10(local-vm-1) Check network to re-create if needed... 11(local-vm-1) Waiting for an IP... 12 13Detecting operating system of created instance... 14Waiting for SSH to be available... 15Detecting the provisioner... 16Provisioning with boot2docker... 17Copying certs to the local machine directory... 18Copying certs to the remote machine... 19Setting Docker configuration on the remote daemon... 20Checking connection to Docker... 21Docker is up and running! 22To see how to connect your Docker Client to the Docker Engine running on 23this virtual machine, run: docker-machine env local-vm-1

该命令表示:“创建一个名为 local-vm-1 的 VirtualBox 实例。” 输出显示了其完成实例配置的各个步骤。例如,可以看到它使用了一个名为 boot2docker.iso 的 镜像。
boot2docker 是一个专为运行 Docker 优化的轻量级 Linux 发行版。

验证实例是否创建成功

要验证实例是否已成功创建,请列出 docker-machine 知道的所有实例:

1$ docker-machine ls 2NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS 3local-vm-1 - virtualbox Running tcp://19... v18.09.1

我们可以对新实例做些什么?

首先,可以通过 SSH 登录:

1$ docker-machine ssh local-vm-1 2( '>') 3/) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY. 4(/-_--_-\) www.tinycorelinux.net 5docker@local-vm-1:~$

查看 Docker 是否已安装,并退出 SSH 会话,使用以下命令:

1docker@local-vm-1:~$ docker -v 2Docker version 18.09.1, build 4c52b90 3 4docker@local-vm-1:~$ exit

在通过 SSH 登录到机器后,可以直接在此处执行 Docker 命令,以在新主机上启动 Docker 服务。或者,如果退出此 SSH 会话并返回本地机器,也可以通过在 SSH 命令末尾添加命令字符串,向该新实例发送命令:

1$ docker-machine ssh <instance name> "<command>"

这将在实例上通过 SSH 登录后执行命令。通常这种方式更适合一次性执行命令,避免手动登录和终止会话。

使用虚拟机打招呼

在本地 VirtualBox 实例上运行一条输出“hello”的命令:

1$ docker-machine ssh local-vm-1 "echo 'hello'"

这将输出 'hello'。

准备上线

探索 Docker Machine