はじめに
AWS Serverless Application Model (SAM) は、サーバレスアプリケーションを簡単に作成、テスト、デプロイするためのフレームワークです。しかし、時々 sam build --use-container
コマンドを使用したときに、”Docker is unreachable. Docker needs to be running to build inside a container.”というエラーメッセージが表示されることがあります。
Dockerが実行中であり、Dockerのバージョン情報が正しく表示されているにもかかわらず、このエラーが発生することがあります。このブログでは、その問題の解決法について説明します。
問題の再現
以下のようなコマンドを実行してみました。
$ sam build --use-container
そして、以下のエラーが表示されました。
Error: Docker is unreachable. Docker needs to be running to build inside a container.
しかし、Dockerは実行中であり、バージョン情報も正しく表示されます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker --version
Docker version 23.0.5, build bc4487a
解決法
解決法は、Dockerのコンテキストを確認し、適切に設定することです。
まず、現在のDockerのコンテキストを表示します。
$ docker context ls
次に、適切なDockerのエンドポイントに対する環境変数 DOCKER_HOST
を設定します。
$ DOCKER_HOST=unix:///Users/sumito.tsukada/.docker/run/docker.sock sam build --use-container
これにより、Dockerが適切に認識され、SAM buildコマンドが正常に実行されるはずです。
結論
DockerとAWS SAM CLIの連携は、サーバレスアプリケーションの開発をスムーズに進める上で非常に便利です。しかし、時々ツール間の接続に問題が生じることがあります。そのような場合は、環境変数を適切に設定し直すことで問題が解決することがあります。ぜひ、この記事があなたの問題解決の一助となることを願っています。