BioContainers のイメージが ECR Public で利用可能になりました
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 を使ってみてはいかがでしょうか。