無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発チームがAWS CodeBuildを使用してDockerイメージをビルドし、Amazon ECRにプッシュするCIパイプラインを構築しています。buildspec.ymlのbuildフェーズにdocker buildとdocker pushコマンドを記述しましたが、ビルド実行時に「Cannot connect to the Docker daemon at unix:///var/run/docker.sock」エラーが発生してビルドが失敗します。この問題の原因と対処法として最も適切なものはどれですか?

A
buildspec.ymlのinstallフェーズにDockerをインストールするコマンドが記述されていないため、Dockerバイナリが利用できない。標準CodeBuildマネージドイメージへの変更かDockerのインストール手順を追加する
AWS標準CodeBuildマネージドイメージ(aws/codebuild/standard:x.0)にはDockerがプリインストールされているため、Dockerバイナリ不足が「Cannot connect to the Docker daemon」エラーの原因にはならない。
B
CodeBuildプロジェクトの環境設定で「特権付き(Privileged)」モードが有効化されていないため、コンテナ内でDockerデーモンが起動できない状態になっている。環境設定でPrivilegedモードを有効化する
✓ 正解
CodeBuildはコンテナ環境でビルドを実行するため、Dockerを使うには特権付きモードでコンテナを起動しDockerデーモンを有効化する必要がある。Privilegedモードを有効化するとDockerデーモンが起動しdocker buildおよびdocker pushコマンドが実行可能になる。
C
buildspec.ymlのpre_buildフェーズにECR認証コマンド(aws ecr get-login-password)が記述されていないため、DockerがECRリポジトリに接続できない状態になっている
ECR認証コマンドの欠如は「no basic auth credentials」エラーを引き起こすが、これはdocker pushの認証段階で発生する問題。「Cannot connect to the Docker daemon」はDockerデーモン自体が起動していないことを示す別のエラーである。
D
CodeBuildのサービスロールにec2:DescribeSecurityGroupsなどのVPC関連IAM権限が付与されていないため、VPC内のDockerデーモンへのアクセスが拒否されている
VPC関連のIAM権限不足はCodeBuildのVPCネットワーク設定に関わる問題であり、Dockerデーモンへの接続エラーとは無関係。ec2:DescribeSecurityGroupsはCodeBuildがVPC内のENIを作成・管理するために必要な権限である。

解説

「Cannot connect to the Docker daemon」エラーは、CodeBuildのビルド環境内でDockerデーモンが起動していないために発生します。CodeBuildはコンテナ環境でビルドを実行しますが、コンテナ内でDockerを使用するには「特権付き(Privileged)」モードの有効化が必要です。PrivilegedモードはCodeBuildプロジェクトの「環境」設定で有効化でき、これによりDockerデーモンが起動しdocker buildおよびdocker pushが実行可能になります。AWS標準CodeBuildマネージドイメージにはDockerがプリインストールされているため、別途インストールは不要です。 選択肢AのDockerインストール不足は、AWS標準CodeBuildマネージドイメージにはDockerが既に含まれているため今回の原因にはならない。 選択肢CのECR認証コマンド不足は「no basic auth credentials」エラーの原因であり、「Cannot connect to the Docker daemon」とは別の問題である。 選択肢DのVPC関連IAM権限不足はCodeBuildをVPC内で実行する際のネットワーク設定に関わる問題であり、Dockerデーモンへの接続エラーとは無関係である。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る