如何在Ubuntu 16.04上使用dry来管理和监控Docker容器

介绍

干监测GIF

dry是一个简单但广泛的终端应用程序,用于与Docker容器及其图像进行交互。 使用dry可以消除执行常规Docker Engine命令时涉及的重复,并且还提供了本地Docker CLI的更多可视替代方案。

dry能够快速启动和停止容器,安全或强制删除删除的Docker映像,持续监视实时容器进程,并访问Docker的infoinspecthistorylog命令的输出。

大多数可以通过官方Docker Engine CLI执行的命令可以在干燥状态下更容易地获得,并具有相同的行为和结果。 另外Dry还具有Docker Swarm功能,提供一个监视和管理多主机容器设置的socket。

在本教程中,我们将安装干燥并探索其最有用的功能:

  • 与Docker容器,图像和网络进行交互,
  • 监控Docker容器和
  • 可选地,与Docker Swarm节点和服务进行交互。

先决条件

要学习本教程,您需要:

第1步 - 安装干燥

首先,我们需要在Docker服务器上安装dry。 最新版本的干文件可在dry的GitHub发布页面上找到

在发布时下载最新版本的dry-linux-amd64二进制文件,即v0.9-beta.3

wget https://github.com/moncho/dry/releases/download/v0.9-beta.3/dry-linux-amd64

接下来,将新的二进制文件从dry-linux-amd64移动并重命名为/usr/local/bin/dry

sudo mv dry-linux-amd64 /usr/local/bin/dry

/usr/local/bin是用于存储服务器本地程序的二进制文件的标准位置。 将干二进制文件移动到该目录也使我们能够从服务器的任何位置在命令行上调用干,因为该目录包含在shell的$PATH环境变量中

使用chmod更改二进制文件的权限以允许您执行它。

sudo chmod 755 /usr/local/bin/dry

您可以通过使用-v选项运行该程序来测试现在是否可以访问并正常工作。

dry -v

这将返回版本号和内部版本的详细信息:

Version Details Outputdry version 0.9-beta.2, build d4d7a789

现在干燥设置好了,让我们尝试使用它。

第2步 - 与Docker容器交互

跑干你的终端上的仪表盘。

dry

仪表板的顶部有关于服务器和Docker软件的信息,例如Docker版本,Docker Engine API版本,服务器是否为启用Docker Swarm的工作者/管理器节点以及服务器的主机名和资源。

仪表板底部有一个可用于访问干燥不同部分的导航键的参考:

Navigation key options[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands 

在任何时候,如果渲染出现错误,您可以使用F5刷新干燥显示。

当您首次开始干燥时,此仪表板本身默认为Containers列表。 通过此视图可以查看主机容器的一般状态。

如果您使用先决条件教程中的示例Wordpress,MariaDB和PHPMyAdmin容器,则会看到列出的三个新组成的容器:

干燥的仪表板图像

使用键盘上的向上和向下箭头来选择Wordpress容器,然后按ENTER

这将在屏幕顶部显示有关容器的一些信息,例如其端口映射,网络链接和网络容器IP地址:

Wordpress Container Statistics  Container Name:  wordpress_wordpress_1                    ID:       f67f9914b57e       Status:  Up 13 minutes
  Image:           wordpress                                Created:  About an hour ago
  Command:         docker-entrypoint.sh apache2-foreground
  Port mapping:    0.0.0.0:8080->80/tcp
  Network Name:    bridge
  IP Address:     172.17.0.3
  Labels           6

当您选择一个容器时,屏幕下方的中心也会显示一个新的可选选项列表:

  • Fetch logs ,与Docker Engine命令docker logs等效。 这对调试和排除容器内的错误非常有用。

  • Kill container ,如果容器没有响应并且没有退出,可以使用它。

  • Remove container ,您可以使用它来干净地移除不需要的容器。

警告 :“ Kill container和“ Remove Container选项会立即发出,并且没有确认提示 ,因此请谨慎。

  • Inspect container ,这相当于docker container inspect

  • Restart ,停止并重新启动容器。 比键入Docker Engine命令重新启动查询容器状态要快得多。

  • Show image history ,其中列出了用于构建容器图像的命令。 这些“图层”在图像构建过程中生成, 并由Dockerfile中提供的命令/操作产生 使用这个选项,我们可以看到使用基础Docker镜像生成的容器。

  • Stats + Top ,其中包括CPU使用率,内存消耗,入站和出站网络流量,文件系统操作,总进程ID以及整体容器正常运行时间等信息。 它还包括一个进程列表,其功能与top的输出相同。

  • Stop ,停止一个容器。 您可以使用F2Containers视图上切换容器以包含currently stopped and active容器,并且可以在选择它之后使用“ Restart选项重新启动已停止的容器。

ESC键返回仪表板的根Containers部分。 从这里开始,我们将看看Images部分。

第3步 - 与Docker映像进行交互

Containers部分,按2访问Dry的Images部分。

图像部分

本部分提供了对docker image inspect命令的更简单访问。 这里也有一些方便的键盘快捷键,您可以在导航栏中看到:

  • CTRL+D用于Remove Dangling ,“悬挂卷”指的是其他容器卷不再由任何容器引用,因此是冗余的。通常在Docker中的命令行中,此操作将涉及docker volume rm命令和dangling=true旗帜,加上目标数据量。
  • Remove CTRL+E (相当于docker rmi )允许您删除图像,只要没有从该图像创建的容器仍处于活动状态并正在运行。
  • CTRL+F for Force Remove ,它可以让你像使用docker rmi --force一样强制删除突出显示的图像。
  • I for History ,它显示与” Containers部分中的” Show Image History “相同的数据。

到目前为止,我们已经看到干燥的容器和图像部分。 最后一节探索的是网络。

第4步 - 与Docker网络交互

Images部分,按3访问Networks部分。

Docker Networks仪表板

本节非常适用于验证网络链接和 Docker容器的网络配置

您可以使用CTRL+E 从Docker中删除网络 ,但无法删除预定义的默认Docker网络(如bridge 然而,作为一个例子,你可以尝试用箭头键选择它并按ENTER键来删除bridge 你会看到这样一段很长的输出:

Output. . .
    "Containers": {
        "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
            "Name": "wordpress_wordpress_db_1",
            "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
            "MacAddress": "02:42:ac:11:00:02",
            "IPv4Address": "172.17.0.2/16",
            "IPv6Address": ""
        },
        "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
            "Name": "wordpress_wordpress_1",
            "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
            "MacAddress": "02:42:ac:11:00:04",
            "IPv4Address": "172.17.0.4/16",
            "IPv6Address": ""
        },
        "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
            "Name": "wordpress_phpmyadmin_1",
            "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
            "MacAddress": "02:42:ac:11:00:03",
            "IPv4Address": "172.17.0.3/16",
            "IPv6Address": ""
        }
    },
. . .

上面的输出部分显示了容器链路和容器bridge网络的网络IP地址和MAC地址。 由此,您可以验证所有容器都是bridge网络的成员,并且可以进行通信,这是容器网络有效的基本指示。

使用ESC关闭网络输出。 现在我们已经看了干燥的ContainersImagesNetworks部分,让我们继续干燥的监测功能。

第5步 - 监控Docker容器

按下M键可快速查看当前服务器/主机上所有正在运行的容器。 此屏幕可以从任何干燥的根部分访问,如ContainersImagesNetworks

监视模式图像

这些信息的一部分在程序中的其他地方列出(例如在Stats + Top容器选项中),但这个视图为所有容器的信息提供了一个中心位置,允许您监视整个。 这在管理大量容器时非常有用。

Q退出仪表板。 从这里开始,我们将使用Docker Swarm进行干燥。

第6步 - 在Docker Swarm Cluster Manager上安装dry(可选)

从本地计算机,用户docker-machine到SSH到您指定的集群管理器节点。 在Docker Swarm的必备教程中,它被设置为node-1

docker-machine ssh node-1

为了演示安装干燥的另一种方法, curl官方安装脚本并运行它。 如果你喜欢避免curl ... | sh curl ... | sh模式,您可以按照第1步安装干燥设备。

curl -sSf https://moncho.github.io/dry/dryup.sh | sh

安装脚本会自动将干性二进制文件移动到/usr/local/bin

Outputdryup: Moving dry binary to its destination
dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

更新二进制文件的权限,就像我们在第1步中所做的那样。

sudo chmod 755 /usr/local/bin/dry

现在尝试干燥。

dry

Containers初始部分的右上角,现在填充在先前步骤中为空的SwarmNode role状态行:

OutputSwarm:      active                                                                       
Node role:  manager                                                                     
Nodes:      3         

您还将看到两个容器,其中列出了很长的图像名称。 其他三个容器分布在其他Swarm工作者节点中,并由先决条件教程中的webserver示例服务定义。

集群管理器的干式安装已准备就绪,所以让我们看看接下来Docker Swarm如何干燥。

第7步 - 与Docker群集节点交互(可选)

Containers部分,按4导航到Nodes部分。

仪表板节点部分

本节将为每个节点显示一些有用的指标,例如其角色(经理或工作),状态和可用性。 屏幕顶部的行显示资源消耗信息。

从这里,使用箭头键选择node-2 ,然后按ENTER 这将拉起单个节点的任务:

节点-2任务仪表板

webserver而言, node-2拥有五个联网容器中的第一个和第二个。 该视图中的任务显示两个容器的CURRENT STATE是活动的,并列出了他们已经运行了多久。 您自己的容器名称在这里编号可能会有所不同。 它取决于容器分配给哪个工作节点,这由Docker服务命令确定

ESC返回到Nodes部分,这样我们可以在这里探索一些dry的键盘绑定。

使用Docker Swarm时的一项常见任务是更改某些节点的状态或可用性。 再次突出显示node-1 ,然后按CTRL+A查看“ Set Availability提示。

OutputChanging node availability, please type one of ('active'|'pause'|'drain')

输入drain并用ENTER

漏选项可防止节点从Swarm集群管理器接收新的方向,通常用于计划的维护。 使用drain还意味着节点管理器在单独的节点上启动副本以设置主动可用性,从而补偿已耗尽节点的临时停机时间。

当您提交drain命令时,左上角的状态消息将确认操作:

您会在左上角的状态消息中看到对此操作的确认。 这一变化也反映在AVAILABILITY列中:

OutputNode iujfrchorop9mzsjswrclzcmb availability is now drain

您还会注意到AVAILABILITY列中反映的更改。

要使node-2备份,再次突出显示它,然后按CTRL+A使“ Set Availability提示恢复。 这一次,输入active并按ENTER

您也会看到有关此操作的确认消息:

OutputDocker daemon: update wrclzcmb availability is now active 

我们没有使用的选项pause节点中找到的每个容器内的所有进程,直到它们再次被设置为active

在最后一步中,我们将与干坞的Docker Swarm服务进行交互。

第8步 - 与Docker Swarm服务交互(可选)

5查看Dry的Services部分。

仪表板服务部分

先决条件教程仅设置一个服务webserver ,该服务设置为在必要时复制实例(即创建新容器),最多不超过五个。 该视图确认5/5副本处于活动状态,并显示服务正在使用的端口映射以及分布式任务。

我们可以使用dry来查看关于服务的更多细节。 webserver服务突出显示时按ENTER

仪表板网络服务器任务摘要

此详细服务视图包含有关服务状态和其Swarm节点的大量信息。

有趣的是,尽管服务设置为五,但您可能会注意到此处列出了七项任务。 这是因为当我们将node-2切换到漏极模式时,Docker Swarm在第7步的测试中早些时候创建了两个额外的复制任务。

我们也可以使用dry来增加副本的最大数量。 ESC返回到Services部分,然后在突出显示webserver服务的同时输入CTRL+S 这将拉起缩放提示:

OutputScale service. Number of replicas?

在上下文中,扩展此服务将有助于满足由于网络流量不断增长而对额外资源的任何需求。 让我们通过在提示符中输入8并按下ENTER ,将副本数量增加到8。

检查确认消息以确认操作:

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

您现在可以查看该Services视图列表8/8副本。

如果您想完全删除服务,请突出显示它并按CTRL+R以提起服务删除提示:

OutputAbout to remove the selected service. Do you want to proceed? y/N

如果您不再需要或不想运行它,可以使用它来删除webserver服务。

最后,按Q退出仪表板并退出程序。

结论

通过遵循本教程,您已经在Docker主机和Docker Swarm集群管理器上进行了设置。 本教程还介绍了干函数的基本要素,如与Docker容器,图像和网络以及Docker Swarm节点和服务进行交互。

还有一种将干连接到运行Docker的远程主机的辅助方法,该方法在干运行时使用-H选项和远程主机的IP地址。 这在您无法安装干燥二进制文件或无兴趣安装干燥二进制文件的情况下非常有用。

从这里开始,尝试将自己的Docker应用于自己的Docker设置,以探索如何简化工作流程。 您可以在GitHub自述文件中探索dry的额外键盘键。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏