BioContainers のイメージが ECR Public で利用可能になりました

バイオインフォマティクスツールの流通経路が広がりました。
2022.10.13

BioContainers で公開されているバイオインフォマティクスツールのコンテナイメージが ECR Public で利用可能になりました。

ECR Public とは

パブリックに公開向けコンテナレジストリで Docker Hub みたいなものです。ちなみにイメージを pull するために AWS アカウントは必要ありません。

BioContainers

BioContainersで公開されているイメージはQuay.ioに保存されていることが多かったですが、これからは ECR Public からもイメージを Pull することができます。

ECR Public Gallery Biocontainers

現在レポジトリ数は8000弱ありました。ツール名で検索してみてください。

試しに Busco のイメージを Pull してみます。docker pull public.ecr.aws/hogeのようにpublic.ecr.aws/と指定するだけです。

$ docker pull public.ecr.aws/biocontainers/busco:2.0--py27_0
2.0--py27_0: Pulling from biocontainers/busco
4f4fb700ef54: Pull complete
b0dc45cd432d: Pull complete
9466b3513669: Pull complete
ddd482ea7b54: Pull complete
4d69f833b9d8: Pull complete
e7c454e5167d: Pull complete
e38092b005c0: Pull complete
f879b42dfe2b: Pull complete
96272e670bb4: Pull complete
Digest: sha256:608d80dcc425da7fe2bb3dc9d2c3e4adf483ee205b1ee0c90eec4a03bae4791a
Status: Downloaded newer image for public.ecr.aws/biocontainers/busco:2.0--py27_0
public.ecr.aws/biocontainers/busco:2.0--py27_0

M1 Mac(arm)で起動してみました。

$ docker run -it public.ecr.aws/biocontainers/busco:2.0--py27_0
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

buscoコマンドは当然利用できますね。

# busco -v
BUSCO 2.0

以前 BioContainers から Pull したイメージを使ったことがありますので Busco については以下のリンクを参照ください。

salmon のイメージも試してみました。全く同じですね。

$ docker pull public.ecr.aws/biocontainers/salmon:v0.7.2ds1-2b1-deb_cv1
$ docker run -it public.ecr.aws/biocontainers/salmon:v0.7.2ds1-2b1-deb_cv1
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

$ salmon -v
version : 0.7.2

とくに変わりなく ECR Public から Biocontainers イメージを pull できるようになったことを確認できました。

Tips

ECR Public から VPC エンドポイント経由で Pull はできない

現状 VPC エンドポイント経由で Pull することはできません。NAT Gateway などのインターネットへ通信できる経路か、インターネットへ通信経路を確保できない事情があれば、事前にイメージを Pull した上で Private な ECR へ Push しておき VPC エンドポイント経由でアクセスすることになります。

[ECR Public] [request]: Add VPC (PrivateLink) support for public repo push and pull · Issue #1160 · aws/containers-roadmap

ECR Public から Pull できない

ECR Pubic から pull するときに'docker login': denied: Your authorization token has expired. Reauthenticate and try again.とエラーメッセージが出力されるときは、

$ docker pull public.ecr.aws/biocontainers/busco:2.0--py27_0
Error response from daemon: pull access denied for public.ecr.aws/biocontainers/busco, repository does not exist or may require 'docker login': denied: Your authorization token has expired. Reauthenticate and try again.

一度ログアウトすると解消します。

$ docker logout public.ecr.aws
Removing login credentials for public.ecr.aws

フィルターは機能していない

ARM 用のイメージあるかなとフィルタしてみたらなくて、x86-64 でもフィルターされなかったので機能していませんでした。

おわりに

AWS Batchや、AWS ParallelCluster で BioContainers のイメージを使うときは ECR Public を使ってみてはいかがでしょうか。