如何在Ubuntu14.04上使用Shipyard部署Wordpress
介绍
Shipyard是Docker服务器的管理工具。 Docker 是用于容器化的尖端软件。 Shipyard 允许您查看每个服务器正在运行哪些容器,以便启动或停止现有容器或创建新容器。
在服务器上设置 Shipyard 后,您可以使用图形界面、命令行界面或 API 访问它。 Shipyard 缺乏其他 Docker 编排工具 的一些高级功能,但设置非常简单,免费使用,您可以自己管理和托管。
本教程介绍如何安装 Shipyard,将其连接到 Docker 服务器,并使用它来创建和启动新容器。 最后,您应该在您的服务器上运行 Shipyard 来管理您的 Docker 主机。
先决条件
要遵循本教程,您将需要:
- 一个带有 Docker 1.5.0 映像的 Ubuntu 14.04 Droplet。
您可以在 Droplet 创建页面的 Applications 选项卡中找到 Docker 1.5.0 镜像选项,在 选择镜像 下。 您还可以按照 本教程 在现有的 Droplet 上安装 Docker。
注意:来自 Ubuntu 14.04 标准存储库的 docker.io
软件包非常旧(版本 0.9.1)。 要使用 Shipyard,您需要使用上面列出的方法之一安装最新版本的 Docker。
第 1 步 — 安装 Shipyard
在这一步中,我们将安装 Shipyard。 本教程中的命令都需要 root 权限,因此以 root 用户身份登录到您的 Droplet 是最简单的。 如果你以非root用户登录,可以运行sudo su
切换到root用户。
一旦你运行了 Docker,就很容易安装 Shipyard,因为它是作为 Docker 镜像发布的。 您需要做的就是从 Docker 注册表中提取图像并运行必要的容器。 首先,我们将创建一个 数据卷容器 来保存 Shipyard 的数据库数据。 这个容器不会自己做任何事情; 它是所有 Shipyard 数据位置的方便标签。
docker create --name shipyard-rethinkdb-data shipyard/rethinkdb
现在创建了数据卷容器,我们可以启动 Shipyard 的数据库服务器并将它们链接在一起。
docker run -it -d --name shipyard-rethinkdb --restart=always --volumes-from shipyard-rethinkdb-data -p 127.0.0.1:49153:8080 -p 127.0.0.1:49154:28015 -p 127.0.0.1:29015:29015 shipyard/rethinkdb
这将启动一个运行 RethinkDB 的容器,这是一个分布式数据库,并确保它只能在服务器本身上本地访问。 如果您尝试在浏览器中访问 http://your_server_ip:49153
,您应该什么也看不到。
现在 Shipyard 的数据库已经启动,我们可以通过启动另一个容器并将其链接到数据库来运行 Shipyard 本身。
docker run -it -p 8080:8080 -d --restart=always --name shipyard --link shipyard-rethinkdb:rethinkdb shipyard/shipyard
我们现在可以使用端口 8080
访问正在运行的 Shipyard 实例。
第 2 步 — 访问造船厂
现在 Shipyard 正在运行,我们需要访问它。 Shipyard 可以通过 GUI、命令行界面 (CLI) 或 API 访问。 我们将从访问 CLI 开始。
使用 CLI 访问 Shipyard
我们可以通过运行另一个容器来访问 Shipyard CLI。
docker run -ti --rm shipyard/shipyard-cli
-ti
标志确保容器是交互式的,--rm
标志使它成为一次性容器,这意味着一旦我们完成它就会自动删除它。
您现在应该看到 Shipyard CLI 提示符,如下所示:shipyard cli>
。 要获取可用命令的列表,您可以输入 shipyard help
。
此命令提示符尚未连接到我们在步骤 1 中设置的 Shipyard 实例,因此我们先连接它:
shipyard login
它会提示您输入 URL。 输入 http://your_server_ip:8080
。 接下来,系统将提示您输入用户名和密码。 用户名和密码默认设置; 输入 admin
作为用户名,输入 shipyard
作为密码。 然后您将返回到 Shipyard 提示符。
现在您以 admin 身份登录到您的 Shipyard 实例。 保留默认密码是一个巨大的安全风险,所以让我们更改它。
shipyard change-password
您需要选择并确认您的新密码。 确保您的新密码是安全的并且您能够记住它。 您现在可以按 CTRL+D 退出 Shipyard CLI。
因为 Shipyard 命令行每次都必须连接到您的 Shipyard 实例,所以您可以在任何能够运行 Docker 容器的系统上运行 Shipyard 命令行,并将其连接到服务器上运行的 Shipyard 实例。
使用 GUI 访问 Shipyard
接下来,我们来看看 Shipyard 的图形界面。 要访问它,请在浏览器中打开 http://your_server_ip:8080
。 这应该会显示登录屏幕。 使用用户名 admin
和您选择的新密码。
登录后,Shipyard 将显示 Engines 选项卡,并警告您 Shipyard 集群中还没有引擎。 engine 是能够运行容器的 Docker 主机。 在这里,我们将添加您要使用 Shipyard 管理的每个 Docker 服务器。
第 3 步 — 添加引擎
我们刚刚部署 Shipyard 的 Droplet 也是一个 Docker 主机,因此我们将能够使用 Shipyard 对其进行管理。 在我们这样做之前; 但是,我们需要将服务器作为引擎添加到 Shipyard。
默认情况下,Docker 配置为侦听 Unix 套接字 /var/run/docker.sock
,但无法从我们的 Shipyard 实例访问该套接字。 我们需要配置 Docker 来监听端口上的请求。 为此,请使用您喜欢的文本编辑器编辑 Docker 配置文件。 (这里,我们使用 nano
。)
nano /etc/default/docker
最后,添加这一行:
DOCKER_OPTS="-H tcp://your_server_ip:4243 -H unix:///var/run/docker.sock"
这将确保 Docker 接受端口 4243
上的连接,但只能来自您的服务器本身。 现在重新启动 Docker 以加载新配置:
service docker restart
这也将重新启动您的 Shipyard 容器。 由于我们使用 --restart=always
运行容器,它们应该会自动恢复。 您可以通过运行来验证这一点:
docker ps
如果由于某种原因 Shipyard 容器没有重新启动,您可以通过运行 docker start shipyard-rethinkdb shipyard
手动重新启动它们。
现在您的 Docker 主机已正确配置,我们可以将其作为引擎添加到 Shipyard。 访问您的 Shipyard GUI 并转到 Engines 选项卡。 单击 + 添加 按钮。 它看起来像这样:
添加以下字段。
- Name:使用可以让您将引擎识别为当前 Droplet 的名称,例如您的 Droplet 的主机名。
- Labels:添加到引擎的标签将允许您控制允许在其上运行的容器。 根据您要使用此 Droplet 的目的,您可以使用生产或测试等标签。
- 地址:使用我们刚刚打开的Docker端口:
http://your_server_ip:4243
现在点击底部的 Add 按钮。 Shipyard 现在将连接到您的 Docker 主机,验证连接并将其添加为引擎。 完成此操作后,您将被引导回 Engines 选项卡。 引擎将首先被列为离线。 等待一两秒并刷新页面,您现在应该能够看到 Docker 主机的详细信息。
第 4 步 — 使用 Shipyard 部署容器
现在我们已经将 Docker 主机作为引擎添加到了 Shipyard,我们可以使用 Shipyard 来启动、停止和部署容器。
访问 Shipyard GUI 并查看 Containers 选项卡。 这列出了在您添加到 Shipyard 的每个 Docker 主机上运行的所有容器。 如果你什么都没做,这个选项卡应该至少显示三个容器,其中两个正在运行:
让我们尝试部署一个新的 Wordpress 博客。 使用官方 Docker 存储库映像,我们需要部署一个 MySQL 和 Wordpress 容器。
单击+部署按钮。 下一个屏幕将允许我们配置要部署的容器。 在下面指定的字段中输入信息。
- 图像:输入
mariadb
。 (MariaDB 是 MySQL 的一个开源分支。) - 容器名称:你可以使用任何你喜欢的,例如
mysql-test
。 - Environment:图片说明会告诉你可以使用哪些环境变量。 在这种情况下,请使用
MYSQL_ROOT_PASSWORD=6f23b328e7
。
- Type:这决定了如何跨多个引擎部署容器。 在这种情况下,请使用
service
。 - Labels:这将用于将容器与引擎匹配。 只需检查您分配给引擎的标签之一。
- Restart Policy:这决定了容器是否应该在错误或Docker重启后自动重启。 在这种情况下,将其保留在
no
上。
现在单击 部署 。 容器启动需要一段时间。 您应该被重定向回容器列表,其中现在应该有一个名为 mysql-test
(或您使用的任何名称)的容器。
您刚刚使用 Shipyard 部署了您的第一个 Docker 容器!
现在我们将使用相同的过程来部署一个链接到我们的 MySQL 容器的 WordPress 容器。 再次点击【X10X】+部署【X22X】按钮,填写如下:
- 图像:
wordpress
- 名称:
wordpress-test
- 链接:
mysql-test:mysql
- 类型:
service
- Labels:检查您用于引擎的任何标签。
- 重启策略:保留在
no
上。
还有一件事要做:我们希望能够从任何地方访问这个 WordPress 容器的 Web 内容,所以我们必须公开它的端口 80
。 为此,单击标题 Port 旁边的加号。
在Protocol下选择TCP,将IP留空,输入1234作为Port和80 ] 作为 容器端口 。
现在您可以单击部署。 再一次,您将需要一段时间才能被重定向回容器列表。 该列表现在还应该显示一个名为 wordpress-test
的容器。 单击它旁边的链接以查看更多详细信息。
在 Ports 下,您会看到 WordPress 容器的端口 80
现在已发布到服务器的端口 1234
。 Shipyard 有助于直接将此列表设置为可点击的链接,您可以使用该链接转到已发布的地址。
单击此链接。 这将带您进入 WordPress 安装向导。 填写该页面上的字段后,您将能够登录到全新的 WordPress 博客并将其视为一个网站。
结论
您现在已经成功地使用 Shipyard 在您的 Docker 主机上部署了一个实际的应用程序!
您已在服务器上启动并运行 Shipyard。 您还应该能够使用 Docker 配置其他服务器并将它们连接到您的 Shipyard 实例以进行管理。 您还学习了如何使用 CLI 和 GUI 连接到 Shipyard 实例,并学习了如何使用 GUI 在 Docker 主机上部署新容器。
现在,您可以随意试用 Docker Registry 上提供的数千个 Web 应用程序。 例如,您可以部署一个 Nginx 容器,以在 本教程 中描述的更易读的 URL 上托管您的新 WordPress 博客。