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

介绍

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》

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Samego开发资源

JDK的安装与配置 | Linux&Windows

2063
来自专栏云计算教程系列

如何使用Helm软件包管理器在Kubernetes集群上安装软件

Helm是Kubernetes的软件包管理器,允许开发人员和操作员更轻松地在Kubernetes集群上配置和部署应用程序。

1532
来自专栏bluesummer

Windows下docker的安装,将ASP.NET Core程序部署在docker中

参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https...

4446
来自专栏数据和云

独家 | 通过Docker技术在macOS上部署3实例MGR环境

自从有了Docker,各种环境部署都简单从容起来,还记得我们曾经分享过:在macOS 上部署Oracle数据库环境,其实MySQL的环境部署起来同样得心应手。 ...

3448
来自专栏bdcn

Anaconda配置和使用 原

原来一直使用原生python和pip的方式,换了新电脑,准备折腾下Anaconda。

8961
来自专栏奔跑的蛙牛技术博客

docker简单实用

docker 面向用户 云计算技术 pack ship run --->docker 特点

1123
来自专栏angularejs学习篇

.net自定义错误页面实现

  在实际的web开发中,经常会遇到以下情况,导致给用不好的体验:     a、程序未处理的异常,直接输出显示到用户页面     b、用户访问的...

1244
来自专栏YouMeek

Python 爬虫基础 — 介绍 + 环境搭建(不含代码级别资料)

3554
来自专栏一英里广度一英寸深度的学习

No zuo no die ,用Docker安装Mysql

回显,GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs

1434
来自专栏accesshub

用户远程接入腾讯云VPC

       在管理控制台的部署容器页面,点击复制用户接入容器运行命令,在服务器上粘贴执行

1624

扫码关注云+社区