この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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 から 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 を使ってみてはいかがでしょうか。