介绍
dry是一个简单但广泛的终端应用程序,用于与 Docker容器及其图像进行交互。
dry 具有快速启动和停止容器的能力,安全或强制删除删除 Docker 图像,不断监控实时容器流程,并访问 Docker 的info
、inspect
、history
和log
命令的输出。
大多数可以通过官方的Docker Engine CLI执行的命令都更容易在干,具有相同的行为和结果。
在本教程中,我们将安装干燥并探索其中一些最有用的功能:
• 与 Docker 容器、图像和网络互动, 监控 Docker 容器和 可选,与 Docker Swarm 节点和服务互动。
前提条件
要遵循本教程,您将需要:
一个 Ubuntu 16.04 服务器设置使用 初始服务器设置为 Ubuntu 16.04,包括一个 sudo 非根用户和防火墙。
- Docker 安装,如在 如何安装和使用 Docker 在 Ubuntu 16.04中)。 几个活跃的 Docker 容器连接在一起来测试干。
- 作为本教程的例子,我们将使用 WordPress 和 PHPMyAdmin 设置(没有文档根的可选步骤)从 如何安装 Wordpress 和 PhpMyAdmin 与 Docker Compose 在 Ubuntu 14.04。
- 另一种方式,你可以使用你自己的现有容器设置。
步骤 1 - 安装干燥
首先,我们需要在Docker服务器上安装Dry。Dry的Dry Binaries的最新版本可以在Dry的GitHub发布页面(https://github.com/moncho/dry/releases)上找到。
下载最新版本的dry-linux-amd64
二进制,该二进制在发布时是v0.9-beta.3
。
1wget https://github.com/moncho/dry/releases/download/v0.9-beta.3/dry-linux-amd64
接下来,移动并重命名新的二进制文件从dry-linux-amd64
到/usr/local/bin/dry
。
1sudo mv dry-linux-amd64 /usr/local/bin/dry
/usr/local/bin
是用于存储本地到服务器的程序的二进制的标准位置.将干二进制移动到该目录还使我们能够从服务器内部任何地方召唤干命令行,因为该目录包含在壳的 $PATH
环境变量。
用chmod
更改二进制的权限,以允许您执行它。
1sudo chmod 755 /usr/local/bin/dry
您可以通过运行该程序使用其-v
选项来测试干
现在是可访问的,并正确工作。
1dry -v
这将返回版本号和构建细节:
1[secondary_label Version Details Output]
2dry version 0.9-beta.2, build d4d7a789
现在干燥已经设置,让我们试着使用它。
步骤 2 – 与 Docker 容器互动
运行干燥以将其仪表板带到您的终端。
1dry
仪表板的顶部包含有关服务器和Docker软件的信息,例如Docker版本、Docker Engine API版本、服务器是否是Docker Swarm支持的工人/管理节点,以及服务器的主机名称和资源。
仪表板的底部有一个参考导航键,您可以使用访问干燥的不同部分:
1[secondary_label Navigation key options]
2[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
3[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands
美元(注)
您可以隨時使用「F5」來更新乾的顯示器,如果顯示器出現錯誤。
美元
此仪表板本身在您第一次开始干燥时默认进入容器
列表. 此视图允许您查看主机的容器的总体状态。
如果您正在使用 Wordpress、MariaDB 和 PHPMyAdmin 容器堆栈的示例,您将看到三个新组成的容器列出:
使用键盘上的上下箭头来选择Wordpress容器,然后按ENTER
。
这将显示屏幕顶部的一些有关容器的信息,如其端口绘制、网络链接和网络容器IP地址:
1[secondary_label Wordpress Container Statistics]
2 Container Name: wordpress_wordpress_1 ID: f67f9914b57e Status: Up 13 minutes
3 Image: wordpress Created: About an hour ago
4 Command: docker-entrypoint.sh apache2-foreground
5 Port mapping: 0.0.0.0:8080->80/tcp
6 Network Name: bridge
7 IP Address: 172.17.0.3
8 Labels 6
当您选择一个容器时,屏幕的底部中心还会显示可选选项的新列表:
Fetch logs
,这相当于Docker Engine命令docker logs
。这对处理集装箱内部的错误和故障是很有用的。Kill container
,如果一个集装箱不响应并且不像应该那样退出,可以使用。
<$>[警告]
警告:杀死容器
和删除容器
选项即时发布,并且有 没有确认提示,所以要小心。
检查集装箱 ' ,相当于[
容器检查 ' (https://docs.docker.com/engine/reference/commandline/container_inspect/)。- `重新启动 ' ,停止并重新启动一个容器。 比打出一个容器的 [重新启动] (https://docs.docker.com/engine/reference/commandline/restart/) 或 [清 https://docs.docker.com/engine/reference/commandline/ps/ 命令要快得多 。
显示图像历史
,其中列出了用于构建容器图像的命令。 这些"层"是在图像构建过程中产生的,由Dockerfile中提供的命令/动作所产生. 通过这个选项,我们可以看到容器是如何使用基座多克图像生成的. *'Stats + Top',包括了CPU使用,内存消耗,出入境网络流量,文件系统操作,总流程ID等信息,以及总的容器运行时间. 它还包括一个过程列表,在功能上与[`top' (https://andsky.com/tech/tutorials/how-to-monitor-cpu-use-on-digitalocean-droplets#top)的输出完全相同.- `停止 ' ,即停止一个容器。 您可以使用 " F2 " 来切换 " 容器 " 上的容器,使之包括 " 目前已停放和正在使用 " ,并且可以在选择 " 重新启动 " 选项后重新启动已停放的容器。 (英语)
点击ESC
键,返回仪表板的根容器
部分,从这里,我们将看看图像
部分。
步骤 3 – 与 Docker 图像互动
从容器
部分,按2
来访问干燥的图像
部分。
这个部分提供了更容易的访问 docker image inspect
命令。 dry 这里也有一些方便的键盘快捷键,你可以在导航栏中看到:
*CTRL+D
为删除危险
,dangling volumes
是指任何容器不再参考的其他容器卷,因此是冗余的。通常在Docker的命令行中,此操作将涉及docker volume rm
命令和dangling=true
旗帜,加上目标数据卷。
*CTRL+E
为Remove
,这相当于docker rmi
(https://docs.docker.com/engine/reference/commandline/rmi/),允许您删除图像,只要没有由该图像创建的容器仍然活跃和运行。
到目前为止,我们已经看到了容器和图像的干部位. 探索的最后一部分是网络。
步骤 4 – 与 Docker 网络互动
从图像
部分,按3
来访问网络
部分。
此部分适用于 Docker 容器的 验证网络链接和网络配置。
您可以使用CTRL+E
删除Docker中的网络(https://docs.docker.com/engine/reference/commandline/network_rm/),但您无法删除预定义的Docker网络,例如桥梁
。
1[secondary_label Output]
2. . .
3 "Containers": {
4 "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
5 "Name": "wordpress_wordpress_db_1",
6 "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
7 "MacAddress": "02:42:ac:11:00:02",
8 "IPv4Address": "172.17.0.2/16",
9 "IPv6Address": ""
10 },
11 "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
12 "Name": "wordpress_wordpress_1",
13 "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
14 "MacAddress": "02:42:ac:11:00:04",
15 "IPv4Address": "172.17.0.4/16",
16 "IPv6Address": ""
17 },
18 "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
19 "Name": "wordpress_phpmyadmin_1",
20 "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
21 "MacAddress": "02:42:ac:11:00:03",
22 "IPv4Address": "172.17.0.3/16",
23 "IPv6Address": ""
24 }
25 },
26. . .
上面的输出部分显示了集装箱链接和集装箱桥
网络的网络IP地址和MAC地址,从此,您可以验证所有集装箱都是桥
网络的成员,可以通信,这是集装箱网络有效性的基本标志。
使用ESC
来关闭网络输出. 现在我们已经查看了干燥的容器
、图像
和网络
部分,让我们转向干燥的监控功能。
步骤5:监控Docker容器
点击M
键,快速概览当前服务器/主机上的所有运行容器. 此屏幕可以从干燥的任何根部分访问,如容器
、图像
和网络
。
此信息的部分列出在程序中的其他地方(例如在状态 + 顶部
容器选项中),但此视图提供了所有容器的信息的中心位置,允许您监控整个堆栈。
按Q
来退出仪表板.从这里,我们将用Docker Swarm设置干。
步骤 6 — 在 Docker Swarm 集群管理器上安装干燥(可选)
从本地计算机,用户docker-machine
到 SSH 到指定的集群管理节点. 在 Docker Swarm 的前提教程中,此设置为node-1
。
1[environment local]
2docker-machine ssh node-1
要展示安装干燥的另一种方法,请弯曲
官方安装脚本并运行它. 如果您更喜欢避免弯曲
模式,您可以像在步骤 1 中一样安装干燥。
1[environment second]
2curl -sSf https://moncho.github.io/dry/dryup.sh | sh
安装脚本会自动将干二进制移动到 /usr/local/bin
:
1[secondary_label Output]
2[environment second]
3dryup: Moving dry binary to its destination
4dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'
更新二进制上的权限,就像我们在步骤 1 中所做的。
1[environment second]
2sudo chmod 755 /usr/local/bin/dry
现在试试干燥。
1[environment second]
2dry
在最初的容器
部分的右上方,在早期步骤中空白的Swarm
和Node 角色
状态行现在被填充:
1[secondary_label Output]
2[environment second]
3Swarm: active
4Node role: manager
5Nodes: 3
你还会看到两个包含长图像名称的容器,其他三个容器分布在其他Swarm工人节点中,并由webserver
示例服务从前提教程中定义。
集群管理器的干式安装已准备好,所以让我们看看Docker Swarm下次干燥如何工作。
步骤 7 — 与 Docker Swarm 节点互动(可选)
从容器
部分,按4
导航到节点
部分。
本节显示了每个节点的一些有用的指标,例如其角色(经理或工作)、状态和可用性。
从这里,使用箭头键选择node-2
,然后按ENTER
。
在网页服务器
服务方面,节点-2
持有五个网络集装箱中的第一个和第二个。本视图中的任务显示两个集装箱的当前状态
是活跃的,并列出了它们运行了多久。你自己的集装箱名称的编号在这里可能会有所不同。这取决于集装箱被分配到哪个工作节点,这取决于 Docker 服务命令
回到节点
部分,点击ESC
,这样我们就可以在这里探索一些干的密钥绑定。
在使用 Docker Swarm 时,一个常见的任务是更改某些节点的状态或可用性。
1[secondary_label Output]
2[environment second]
3Changing node availability, please type one of ('active'|'pause'|'drain')
输入Drain
并用ENTER
确认。
Drain 选项阻止节点从 Swarm 集群管理器接收新指令,通常用于计划的 myantenance。 使用 drain 也意味着节点管理器在单独的节点上启动了复制到活性可用性,这弥补了被排出节点的临时停机时间。
当您提交排水
命令时,左上角的状态消息将确认该操作:
您将在左上方显示的状态消息中看到此操作的确认,该更改也反映在可用性
列中:
1[secondary_label Output]
2[environment second]
3Node iujfrchorop9mzsjswrclzcmb availability is now drain
您还会注意到在可用性
列中反映的变化。
要将节点-2
备份,请再次突出并按CTRL+A
,以返回设置可用性
提示。
您还会看到此操作的确认消息:
1[secondary_label Output]
2[environment second]
3Docker daemon: update wrclzcmb availability is now active
我们没有使用的停顿
选项暂时停止了节点中的每个容器中的所有进程,直到它们再次被设置为活跃
。
在最后一步中,我们将与Docker Swarm服务进行干扰。
步骤 8 — 与 Docker Swarm 服务互动(可选)
按5
查看干的服务
部分。
此前提教程仅设置了一个服务,即Web服务器
,该服务设置为复制实例(即在需要时创建新容器),最多为五个。
我们可以使用干燥来查看有关服务的更多细节. 当网页服务器
服务被突出时,按ENTER
。
此详细的服务视图包含大量关于服务状态和其Swarm节点的信息。
有趣的是,你可能会注意到这里列出了七个任务,尽管服务被设置为五个,这是因为Docker Swarm在步骤7中的测试之前创建了两个额外的复制任务,当时我们将节点-2
切换为排水模式。
我们也可以使用干燥来增加最大复制件数,按ESC
,返回服务
部分,然后输入CTRL+S
,同时突出显示网页服务器
服务。
1[secondary_label Output]
2[environment second]
3Scale service. Number of replicas?
在这个背景下,扩展这个服务将有助于满足因网络流量增加而需要的任何额外资源的需求,让我们通过在提示中输入8
并按ENTER
来增加复制件的数量到8。
查看此确认消息以确认操作:
1[secondary_label Output]
2[environment second]
3Docker daemon: update v6gbc1ms0pi scaled to 8 replicas
您现在可以看到服务
视图列表8/8
对服务的复制品。
如果您想完全移除服务,请突出显示它并按CTRL+R
来引导服务移除提示:
1[secondary_label Output]
2[environment second]
3About to remove the selected service. Do you want to proceed? y/N
您可以使用此功能删除网页服务器
服务,如果您不再需要或想要运行它。
最后,按Q
来退出仪表板并停止程序。
结论
通过遵循本教程,您已经在Docker主机和Docker Swarm集群管理器上设置了干燥功能,本教程还涵盖了干燥功能的基本内容,例如与Docker容器,图像和网络以及Docker Swarm节点和服务的交互。
有连接干到运行Docker的远程主机的次要方法,该方法在运行干时使用-H
选项与远程主机的IP地址。
从这里开始,尝试将 dry 应用到自己的 Docker 设置中,以探索它如何简化工作流程,您可以在 GitHub README中探索 dry 的额外密钥联系。