本記事は
【コンテナウィーク】
4日目の記事です。
💻
3日目
▶▶ 本記事 ▶▶
5日目
📱
おざわです。最近洗濯機を買い替えました。 乾燥機能がついていてタオルがふかふかになり、私の心もほくほくです。
そんな中、今回はコンテナ界がわくわくする話題についてまとめたいと思います。
Finch、GA!
10/31にFinchがGAされました!
これに伴い公式ページも立ち上がっていたようです。
今回はこのページ内容も絡めながら、前回私が書いた記事の内容と比較して、 個人的に取り上げたい項目についてまとめてみたいと思います。
改めてFinchとは?
FinchはAWSが開発したコンテナコマンドラインツールです。 詳細は以前私が書いた以下の記事をご覧いただければと思います。
新たに公開されたページには構成図も載っております。わかりやすいです。
Finchでできるようになったこと
以前と比較して、Finchでできるようになったことについてまとめてみます。
ECR Credential Helper が使えるようになりました!
詳細についてはこちらです。↓
このページに倣ってローカルで試してみたいと思います。
ちなみにデフォルトの finch.yaml はこんな感じです。
cpus: 4 memory: 4GiB snapshotters: - soci creds_helpers: - ecr-login additional_directories: - path: /Volumes vmType: qemu rosetta: false
下記の部分で credential helper が finch VM にインストールされるようです。
creds_helpers: - ecr-login
とりあえずAWSアカウントの ECR Private Registry にいたNginxイメージをPullしてみます。
ちなみに公式ページだと、aws ecr get-login-password
の実行結果をパイプでfinchコマンドに渡してあげるような記述になっていますが、
当方 aws-vault
で認証情報管理をしているため、こちらで渡してあげるようにします。
➜ aws-vault exec awesome-aws-account -- finch pull xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:1.23.1-alpine xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:1.23.1-alpine: resolved |++++++++++++++++++++++++++++++++++++++| manifest-sha256:4550bf745cc1cdb9bbf415dbef60b33ff5a6cd218e907c0863fcfaeaa6e00ad4: done |++++++++++++++++++++++++++++++++++++++| config-sha256:568998804441e25c0b6cb620162648ef70ca77a690dd4f85c86dff426712b8a9: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:5056d2fafbf237305281e02d3dd64601e2c86c45773ab3b7816f47e3bd2024be: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:f294ffcdfaa8b9d8bf8c0995661ad4cf4f185587cc2313a8cc4b9afc6bb9a6ee: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:213ec9aee27d8be045c6a92b7eac22c9a64b44558193775a1a7f626352392b49: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:9a1e8d85723aa657f9eefde367fa01a844eeca2091d75fa118b49bbd567d3dc4: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:6779501a69bab3ee492a189f6bf25b1bde2a9e879b133b1f3ce1591c31cb11a1: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:56424afbb509680a28e24aadb5bd354a0421ca0c0da8531309116637b2c23a53: done |++++++++++++++++++++++++++++++++++++++| elapsed: 4.7 s total: 9.7 Mi (2.1 MiB/s)
できました!
これで今までDockerでやってた感じのECRへの接続ができそうです。嬉しい。
SOCI snapshotter が利用可能に!
SOCI snapshotter については下記をご覧いただければと思います。
ちなみに現状でコンテナイメージにSOCI Indexを付与する方式としては、
- ローカル端末に上記のsoci-snapshotterをインストールし、環境構築する
- 下記で提供されるAWS CloudFormation テンプレートを用いてAWS上で環境構築する
の、2パターンあるようです。
今回Finchがこれに標準で対応したようなので、こちらも試してみます。
設定としては上述の finch.yaml における下記の部分です。
snapshotters: - soci
SOCI Indexを付与する場合は、ある程度のイメージサイズがあるイメージに対して実行する必要があるので、
今回は TensorFlowのイメージを使います。理由は重そうという私の決めつけです。
レポジトリ名をタグづけした tensorflow-serving イメージを ECR Private Registry に Push します。
➜ aws-vault execawesome-aws-account -- finch push xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tensorflow-serving INFO[0000] pushing as a reduced-platform image (application/vnd.docker.distribution.manifest.v2+json, sha256:f739463e0713d1efe9c7a239cccd360d148e601d85c87025f4c9ca28a2696de5) manifest-sha256:f739463e0713d1efe9c7a239cccd360d148e601d85c87025f4c9ca28a2696de5: done |++++++++++++++++++++++++++++++++++++++| config-sha256:867aa91a5215ed3384ddba1556a9cc6444e6ad5f257483cb9f6a65056a15bdbb: done |++++++++++++++++++++++++++++++++++++++| elapsed: 39.2s total: 7.4 Ki (194.0 B/s) INFO[0074] soci: layer sha256:d698aee1fc67ad8829a42a6037a78a567cf6d98a83b29fe6707597662fe2996e -> ztoc sha256:b33def53b6de22628e54d6b6f7b53f20fddfdc8cbf947dc0a0ea2e3ded571878 INFO[0075] soci: checking if a soci index already exists in remote repository... INFO[0075] soci: pushing soci index with digest: sha256:da14bd89740b8c451bda5f1d5255fd47cc449f6a9b63fc0ab1dc49b142f07e6d INFO[0075] soci: pushing artifact with digest: sha256:b33def53b6de22628e54d6b6f7b53f20fddfdc8cbf947dc0a0ea2e3ded571878 INFO[0075] soci: pushing artifact with digest: sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a INFO[0075] soci: skipped artifact with digest: sha256:f739463e0713d1efe9c7a239cccd360d148e601d85c87025f4c9ca28a2696de5 INFO[0076] soci: successfully pushed artifact with digest: sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a INFO[0076] soci: successfully pushed artifact with digest: sha256:b33def53b6de22628e54d6b6f7b53f20fddfdc8cbf947dc0a0ea2e3ded571878 INFO[0076] soci: pushing artifact with digest: sha256:da14bd89740b8c451bda5f1d5255fd47cc449f6a9b63fc0ab1dc49b142f07e6d INFO[0077] soci: successfully pushed artifact with digest: sha256:da14bd89740b8c451bda5f1d5255fd47cc449f6a9b63fc0ab1dc49b142f07e6d
公式ページだと --snapshotter soci
オプションを付与しているようですが、なくてもpushできました。
ECRの方を見ても正しくPushされているようです。
その他
コマンドオプションも以前に比べて色々増えているように感じましたが、全て見切れていないため、またじっくり確認しようと思います。
また最近話題(?)のイメージ署名もできるみたいです。まだあまり使いこなせていないのでこちらも今後試してみようかと思います。
【小ネタ】デタッチキーを認識してくれるようになりました!
コンテナからログアウトする際に使うシャレオツコマンド Ctrl + Q + P
ですが、対応してました。
@bdbf30fbb5de:/$ INFO[0019] read detach keys ~
↑こんな感じでおしゃれにコンテナからログアウトできました。素敵。
まとめ
以前よりもさらに機能が増えたFinch、実運用で使える期待値が上がったように思います。
特に、SOCI snapshotter については利用するためのローカルないしAWS側で環境構築の手間がありますが、
finch VM が起動さえすれば、この機能が使えるようになるのは個人的には魅力的だなーと感じました。
今後も動向を追ってみようと思います。