如何清理你的Docker环境对CoreOS集群中使用CloudSlang

CloudSlang是一个开源的业务流程解决方案,它可以很容易地使用工作流程的自动化,或简称流。在本教程中,我们还会清理部署在使用CloudSlang流CoreOS集群中的每个机器Docker环境。

介绍

CoreOS是一个Linux发行版,其重点是通过利用Docker容器和服务发现来快速启动集群环境。 如果你是新来CoreOS,看看这个入门CoreOS系列教程。

然而,Docker镜像在Docker主机上占用了相当多的磁盘空间。 基本映像的大小可以达到几百MB,自定义映像可以轻松达到1 GB。 如果您的应用程序有很多版本的新Docker镜像,它们可以轻松地存储在服务器存储上; 如果您不时地清除旧的或未使用的映像,服务器可能会耗尽磁盘空间。

CloudSlang是一个开源的业务流程解决方案,它可以很容易地使用工作流程的自动化,或简称流。 流包含任务和导航逻辑的列表。 任务可以调用操作,其中包含运行Python脚本或Java方法的操作或其他流程。 CloudSlang语言允许您以文本,可重用的方式定义流,并且您可以使用现有内容(Docker,OpenStack和实用程序)来管理已部署的应用程序或创建自己的自定义流。

在本教程中,我们将使用CloudSlang清理CoreOS集群中部署的每台计算机的Docker环境。 我们将使用已经存在的内容,因此您不需要编辑任何CloudSlang文件。

先决条件

在开始之前,您需要:

第1步 - 安装解压缩

在这一步中,我们将安装unzip的CloudSlang服务器上。

首先,确保软件包列表是最新的。

sudo apt-get update

然后,安装解压缩。

sudo apt-get install unzip

第2步 - 下载CloudSlang

在本节中,我们将下载CloudSlang CLI工具和可用内容(预定义操作和流)。 CloudSlang CLI是一个命令行界面工具,可用于运行流。

首先,下载CloudSlang CLI存档。

wget https://github.com/CloudSlang/cloud-slang/releases/download/cloudslang-0.7.29/cslang-cli-with-content.zip

解压缩存档。

unzip cslang-cli-with-content.zip

这将创建一个cslang目录。 如果列出该目录的内容,

ls ~/cslang

你会注意到三个目录:

  • python-lib ,这是用于外部Python库。

  • cslang ,其中包含CloudSlang CLI文件。 cslang/bin文件夹中包含一个文件名为cslang用来启动命令行。 cslang/lib包含应用程序所需的依赖关系。

  • content ,其中包含现成CloudSlang内容。 我们将要运行的流动位于content/io/cloudslang/coreos ,它被称为cluster_docker_images_maintenance.sl 此流程迭代集群中的所有计算机,并删除未使用的Docker镜像。

第3步 - 添加私钥

CloudSlang需要对您的CoreOS集群进行SSH密钥访问。 在此步骤中,我们将通过在CloudSlang服务器上创建新的密钥对并将公用密钥添加到CoreOS集群来添加。

首先,通过以下第1步和2创建密钥对没有密码本教程 在拥有密钥对之后,您需要将您的公钥添加到CoreOS集群中的每台计算机。

首先,在CloudSlang服务器上获取公钥。

cat ~/.ssh/id_rsa.pub

你会看到一个长的输出,开头ssh-rsa和结尾username @ hostname 将其复制以在下一个命令中使用。

SSH到您的CoreOS一台服务器(默认用户名是core ),然后运行以下命令来添加你的公钥。

echo "your_public_key" >> ~/.ssh/authorized_keys

您需要对CoreOS集群中的每个服务器执行此操作。

第4步 - 运行流程

在本节中,我们将运行流程并验证其行为。

为了运行的流程,CloudSlang服务器上,先切换到/cslang/bin目录。

cd ~/cslang/cslang/bin/

运行名为可执行cslang以启动命令行。

./cslang

稍后,您将看到CloudSlang欢迎屏幕。

0.7.26-SNAPSHOT
Welcome to CloudSlang. For assistance type help.

请在命令行下面的命令,替换your_coreos_server_ip与集群中的服务器CoreOS之一的IP地址。

custom_prefix(cslang>)
run --f  ../../content/io/cloudslang/coreos/cluster_docker_images_maintenance.sl --i coreos_host=your_coreos_server_ip,coreos_username=core,private_key_file=~/.ssh/id_rsa --cp ../../content/

run命令触发的流动。 --f指定的路径流动。 --i指定流输入:一个CoreOS主机和用户名和关联的SSH私钥--cp指定类路径时的流动取决于其它操作和流量。 由于这种流动有许多不同的相关性,我们可以指定父content文件夹; 扫描是递归的,因此也扫描子目录。

流逻辑首先从集群中检索机器的IP地址,然后遍历机器并清除未使用的映像。 首先,它通过检查运行/停止的容器获取所有图像,仅留下未使用的图像。 接下来,它删除未使用的图像。 最后,它对于悬浮图像也是一样。

当流运行时,CLI显示已执行的任务名称。 一旦流完成,CLI输出一些有用的信息,如流输出和流结果。

在我们的例子中,流结果将是SUCCESS(意味着未使用的Docker镜像在群集中被清除)或FAILURE(意味着出现问题)。 这个流程有一个输出: number_of_deleted_images_per_host ,这是多少图像群集中的每个主机上删除。

如果一切顺利,你应该看到类似这样的输出:

...

Flow : cluster_docker_images_maintenance finished with result : SUCCESS
Execution id: 101600001, duration: 0:02:06.180

如果你想在执行的更多信息,请查看execution.log这是由CLI中创建的文件bin文件夹中。

结论

现在所有未使用的Docker镜像都会在您的CoreOS集群中删除!

在本教程中,您已经了解了如何在Ubuntu计算机上运行CloudSlang以及如何使用CloudSlang CLI触发流。 您还使用现成的工作流来清理Docker环境。

版权所有2015年6月9日,Hewlett-Packard Development Company,LP转载于许可。