前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在CoreOS集群上使用CloudSlang清理Docker环境

如何在CoreOS集群上使用CloudSlang清理Docker环境

原创
作者头像
宇cccc
修改2018-09-21 09:58:04
1.1K0
修改2018-09-21 09:58:04
举报

介绍

CoreOS是一个Linux发行版,专注于利用Docker容器和服务查询快速启动集群环境。但是,Docker镜像可能占用Docker主机上相当多的磁盘空间。普通映像的大小可以达到数百MB,自定义映像也可以随便就达到1 GB。如果您的应用程序有许多新的Docker镜像版本,它们可以轻松地存储在服务器存储上;如果您不时清除旧的或未使用的镜像,则服务器可能会耗尽磁盘空间。

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

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

准备

在开始之前,您将需要:

  • 带有sudo命令的非root用户的Ubuntu 14.04 Droplet ,它将是你的CloudSlang服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 在CloudSlang服务器上安装Java(版本7或更高版本)。请注意,您不需要安装JDK,只需安装JRE。
  • 一组三台CoreOS机器。

第一步 - 安装解压缩

在此步骤中,我们将在CloudSlang服务器上安装unzip

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

sudo apt-get update

然后,安装解压缩。

sudo apt-get install unzip

第二步 - 下载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的文件,用于启动CLI。cslang/lib包含应用程序的必要依赖项。
  • content,其中包含现成的CloudSlang内容。我们要运行的流程位于content/io/cloudslang/coreos,一个名为cluster_docker_images_maintenance.sl的文件。此流程迭代集群中的所有计算机并删除未使用的Docker镜像。

第三步 - 添加私钥

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

首先,按照本教程的第一步和第二步,创建一个没有密码的密钥对。拥有密钥对后,您需要将公钥添加到CoreOS集群中的每台计算机上。

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

cat ~/.ssh/id_rsa.pub

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

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

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

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

第四步 - 运行流程

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

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

cd ~/cslang/cslang/bin/

运行调用的可执行文件cslang以启动CLI。

./cslang

片刻之后,您将看到CloudSlang欢迎屏幕。

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

在CLI中输入以下命令,将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

如果您想了解有关执行的更多信息,请查看bin文件夹中CLI创建的文件execution.log

结论

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

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

想要了解更多关于Linux教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Clean Up Your Docker Environment Using CloudSlang on a CoreOS Cluster》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 第一步 - 安装解压缩
  • 第二步 - 下载CloudSlang
  • 第三步 - 添加私钥
  • 第四步 - 运行流程
    • 结论
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档