使用【AWS】Finch来学习AWS,同时动手实践一下
首先
本文介绍了一篇关于学习使用AWS提供的开源容器开发客户端Finch的文章,同时还会重点记录一些实践过程中的笔记。如果有遗漏或错误,将会进行修正。
「Finch」是什么意思?
这是一个用于容器开发的开源客户端。
AWS推出GA宣布如下所述。
一年前,AWS宣布了一个崭新的开源项目——Finch,这是一个用于在macOS上构建、运行和发布Linux容器的命令行开发工具。我们的团队和不断壮大的社区在过去的一年里努力开发,今天我们很高兴地宣布Finch已经达到了1.0版本的里程碑,可以正式提供下载。下载链接为https://github.com/runfinch/finch/releases/tag/v1.0.0。
Finch是一款在macOS上构建、运行、发布Linux容器的命令行工具,而GA版本是v1.0.0。
另外,在实施方面还有如下所述。
芬奇依赖于几个开源项目,包括Lima和nerdctl,并且我们一直在积极地合作这些项目。Lima提供了虚拟机,其中运行着一个小型Linux操作系统镜像,该镜像用于运行容器运行时组件。这些运行时组件包括nerdctl,它是containerd的包装器,提供了开发人员所熟悉的常见容器生命周期命令行功能。
根据要点进行审视
-
- Finchは、Limaやnerdctlを含むいくつかのオープンソースプロジェクトに依存
-
- Limaは、小さなLinux OSイメージがコンテナー・ランタイム・コンポーネントを実行する仮想マシンを提供
- 仮想マシンにはコンテナ・ライフサイクルのコマンドライン機能を提供するcontainerdのラッパーであるnerdctlが含まれる
当我们开始关注功能方面时
我们贡献的两个特点包括容器镜像签名和支持使用可搜索OCI(SOCI)创建和运行镜像,这是来自AWS的开源技术,使容器能够通过延迟加载容器镜像更快速地启动。
换句话说
-
- コンテナイメージの署名
- Seekable OCI(SOCI)を使用したイメージの作成と実行の両方へのサポート
Seekable是AWS的开源技术,通过延迟加载容器镜像来加快容器的启动。
准备起飞:宣布鹀鸟1.0全面生产!
Docker和这个命令的使用感觉几乎相同,这是一个重要的亮点。
因为仅仅阅读说明并不能理解很多东西,所以我想立即去碰一下它。
前提 tí)
根据公告,似乎只支持MacOS。这次我们计划采用Apple Sillicon芯片(M2)进行。
具体环境的详细内容见以下。
MacBook
Apple M2
24 GB
Sonoma 14.0 (23A344)
Finch
finch version v1.0.0
安装设置
在尝试触摸之前,我想要进行设置。首先进行安装。
brew install finch
接下来我将启动虚拟机。
finch init
这样设置就完成了。
准备运动
我想要参考之前的文章,在finch上执行命令。
流程检查
这是一个用于检查容器进程的命令。
finch ps
直译成中文可以是:虽然简单的PS也可以,但实际上我认为更常用的是使用-A。
finch ps -a
从注册表中获取图像。
获取nginx镜像的命令。
finch pull nginx
在进行pull操作时,通常会指定标签进行pull。这一点在Dockerfile中同样适用。
显示保存的图像列表
获取保存的图像列表。
finch images
使用Docker镜像启动容器。
在端口80上启动nginx的命令是什么。
finch run -p 80:80 --name nginx_web --detach nginx
这个选项有很多功能,但是意思如下。
-p
ポートを指定する
-d
コンテナをバックグラウンドで実行し、コンテナIDを表示
–name
コンテナ起動時にコンテナに名前をつける
※ 看起来不能同时指定–rm和–detach。
–rm
コンテナ終了時にコンテナを削除する
确认是否正在执行。
finch ps
停止容器。
finch stop nginx_web
删除容器。
finch rm nginx_web
如果需要进行音量装载并启动,请这样做。
当您添加卷时,它会关联到主机的存储卷。
finch run --detach --volume "$(pwd)":/usr/share/nginx/html -p 80:80 --name nginx_web nginx
停止容器。
finch stop nginx_web
删除容器。
finch rm nginx_web
从容器中创建图像
从正在启动的容器中创建镜像。如果预先从容器创建镜像,即使在不幸情况下丢失了Dockerfile,也可以根据容器的信息重新构建Dockerfile。
finch commit nginx_web oreno
在容器中执行命令。
首先启动容器。
finch run -p 80:80 --name nginx_web --detach nginx
执行给定的容器的命令。在容器后面输入要执行的命令。在下面的示例中,执行了 sh。
finch exec -it nginx_web sh
由于提示改变,请尝试输入一些命令。
切换到shell
bash
显示主机名等信息
uname -a
扫视目录
ls -la
输出显示在nginx上的HTML源代码。
cat /usr/share/nginx/html/index.html
使用APT查看软件包列表。
apt list
查看环境变量。
env
从集装箱里出来。
exit
exit
停止容器。
finch stop nginx_web
查看元数据
这是一个用于参考映像和/或容器配置的命令。
如果想看图像,可以看一下
finch inspect nginx
如果要查看容器的话
finch inspect nginx_web
显示容器日志
这是一个用于查看容器中生成的日志的命令。在容器调试方面非常有用。
finch logs nginx_web
删除容器
删除容器。
finch rm nginx_web
删除图像
通过指定图像ID删除图像。
finch rmi nginx
确认环境
查看集装箱的运营状况。
finch ps -a
查看已保存的图像。
finch images
请稍微加点创意输入指令。
Docker在支持–digests和–format参数。Finch是否也支持呢?让我们试试看。
参考CSV中保存的图像信息
让我们使用`–digest`和`–format`参数来改变finch images的显示方式。
finch images --digests --format='{{.ID}},{{.Repository}},{{.Tag}},{{.Digest}},{{.Size}}'
执行结果
be29ad08087d,oreno,latest,sha256:be29ad08087dfad95a8e1a09b9ef8a3c4795b245b56d7b785a099c0096b32515,197.5 MiB
非常令人印象深刻地成功了。
使用–filter=reference仅显示相关图像。
接下来是使用-filter选项进行显示。
在docker中,这是可以用来仅获取相应镜像名称的选项。
执行下面的命令。
finch images --format='{{.Repository}}' --filter=reference='oreno'
执行结果※
oreno
※查看 finch 提交了 oreno 创建的新镜像。
只显示被标记为的图像。
如果想要显示未被中间映像使用且标签为的不必要映像,可以在docker中使用“-f “dangling=true””命令。
在finch可以使用吗?
finch images -f "dangling=true"
如果没有,则执行dangling=false命令。
finch images -f "dangling=false"
删除图像
使用docker和dangling=true参数可以删除不必要的镜像。
在finch中能否实现呢?
finch rmi -f `finch images -f "dangling=true" -q`
如果没有,则执行dangling=false命令。
finch rmi -f `finch images -f "dangling=false" -q`
在24小时内删除无使用的图像。
以下命令用于删除在docker中在24小时内未使用过的镜像。
docker image prune -a --force --filter "until=24h"
在finch上能用吗?
finch image prune -a --force --filter "until=24h"
无法执行。
FATA[0000] unknown flag: --filter
FATA[0000] exit status 1
当查看finch图像剪裁–help时,似乎支持-a和-f选项。
正确的命令如下,但是由于–filter不起作用,需要想办法。
正确的命令如下,但是要注意–filter无效,需要进行调整。
下面是正确的命令,但由于–filter不起作用,需要一些技巧。
finch image prune -a --force
清理容器的命令
以下的命令是用于在docker中删除所有容器的命令。
docker rm -f $(docker ps -a -q)
在finch上能动吗?
finch rm -f $(finch ps -a -q)
一切問題都沒有,你可能已經注意到了,在準備運動中,你應該能夠做到這個程度吧。
清除容器的命令(有条件)
如果只想删除已停止的Docker容器,可以使用以下命令。
docker rm $(docker ps -a -q --filter "status=exited") && docker ps -a
只用一个选项,用中文进行释义:
finch能动起来吗?
首先,启动容器。
finch run -p 80:80 --name nginx_web --detach nginx
停止容器。
finch stop nginx_web
最后执行以下命令。
finch ps && finch rm $(finch ps -a -q --filter "status=exited") && finch ps -a
问题已经解决,没有出现任何问题。
系统子命令
在Docker中,我們能夠使用df命令,但在finch中是否也可以使用呢?
finch system df
遗憾的是,只能支持事件、信息和修剪功能。
顺便说一下,当执行docker system df命令时,会显示四种状态:镜像容量、容器容量、容器卷容量和构建缓存。
我们最后清理环境就可以结束了。
finch system prune
他在意的事情
是否共享Docker和本地镜像仓库?
目前为止的正确答案是不做。
总结
这次我尝试使用了经过GA的finch。由于它几乎与docker命令兼容,一旦熟练掌握,它将大显身手。我个人觉得几乎所有我想用的命令组合都可以正常运行,所以在工作中也可以使用它。
此外,最近还有一种受限制的环境,例如,在没有SSL的情况下,无法从注册表下载映像,因此无法确定容器是否可以在各种环境中使用。我希望在以后的机会中进行确认。
其实,这次没有使用nerdctl,但也许进行以nerdctl为重点的验证也是一个不错的选择。我希望能够将其作为下次的乐趣保留下来。
请提供更多上下文,以便我可以为您准确地提供中文的表述。
- コンテナ開発用のオープンソースクライアント「Finch」のご紹介