😜
CodeBuildでDockerを使う場合の注意点2つ
AWS CodeBuild上でDockerを使いたい場合、注意することが2点ある。
同じ問題にぶち当たった時の参考にしていただきたい。
まとめ
- CodeBuild上でDockerを使いたいなら、CodeBuild作成時にオプションをONにする。
- Dockerから出される「利用制限(Too many Requests)」の対処法は3つある。
- Docker Hubにログインしてから利用する
- CodeBuildをVPCにおいてDockerを利用する
- 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つ
- Docker Hubにログインしてから利用する
- Docker Hub の Rate Limitに引っかかったのでdocker loginで対策した - fu3ak1's tech days - CodeBuildをVPCにおいてDockerを利用する
- CodeBuild作成時の設定でVPC上で作成するか決めれる
- ECRに利用したいImageをコピーする
- 対象ImageをECRを利用すればDockerHubの制限から解放される
筆者のおすすめは「2」の方法。
運用してるシステムでVPCを利用してるなら、そのVPCを拝借すればいい。
DocerHubにログインする方法よりも回数制限が緩くなる。
ただ、CodeBuildを配置するSubnetがインターネットに接続できる状態でないとダメなのでお気をつけて。
VPCを利用してないなら、無理せず「1」の方法を利用するといい。
「3」は筆者的にあまりお勧めしない。Imageのバージョンを固定で利用するなら問題ないが、バージョンUPに追随したいとかだと運用が面倒になる。
Discussion