😜

CodeBuildでDockerを使う場合の注意点2つ

2022/06/07に公開

AWS CodeBuild上でDockerを使いたい場合、注意することが2点ある。
同じ問題にぶち当たった時の参考にしていただきたい。

まとめ

  • CodeBuild上でDockerを使いたいなら、CodeBuild作成時にオプションをONにする。
  • Dockerから出される「利用制限(Too many Requests)」の対処法は3つある。
    1. Docker Hubにログインしてから利用する
    2. CodeBuildをVPCにおいてDockerを利用する
    3. ECRに利用したいImageをコピーする

CodeBuild上でDockerを使うための設定

CodeBuild上(buildspec.yml)でdocker buildなどのコマンドを使う際にエラーが出る事がある。
エラー内容は「dockerがないで」的な内容。
対象法は至ってシンプル

  • CodeBuild作成時に「Dockerの特権をあーだこーだ」というチェックボックスがあるので、そこにチェックを入れておく。

CloudFormationで作る場合はPrivillegeMode=trueの設定を入れる。
参考:CodeBuildでDocker in Dockerする(CloudFormation) - Qiita

「利用制限(Too many Requests)」とその対処法

非VPC - CodeBuildでDockerを利用すると結構な確率で「Too many Requests」エラーが出る。
これが発生する理由は割愛する。別の記事に理由がいっぱい書かれてる。
参考:CodeBuild で Docker Image をビルドするときにはまる罠|CTC Buildサービスチーム|note
対処法は3つ

  1. Docker Hubにログインしてから利用する
    - Docker Hub の Rate Limitに引っかかったのでdocker loginで対策した - fu3ak1's tech days
  2. CodeBuildをVPCにおいてDockerを利用する
    • CodeBuild作成時の設定でVPC上で作成するか決めれる
  3. ECRに利用したいImageをコピーする
    • 対象ImageをECRを利用すればDockerHubの制限から解放される

筆者のおすすめは「2」の方法。
運用してるシステムでVPCを利用してるなら、そのVPCを拝借すればいい。
DocerHubにログインする方法よりも回数制限が緩くなる。
ただ、CodeBuildを配置するSubnetがインターネットに接続できる状態でないとダメなのでお気をつけて。

VPCを利用してないなら、無理せず「1」の方法を利用するといい。

「3」は筆者的にあまりお勧めしない。Imageのバージョンを固定で利用するなら問題ないが、バージョンUPに追随したいとかだと運用が面倒になる。

Discussion