
AWS SAM CLIで「Docker is unreachable. Docker needs to be running to build inside a container.」のエラーが発生したので対処した
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ある日突然、AWS SAM CLIのbuildコマンドを実行すると、失敗するようになりました。
$ sam build --use-container ...(省略)... Build Failed Error: Docker is unreachable. Docker needs to be running to build inside a container.
心当たりといえば、macOSをVenturaにアップグレードしたぐらいです。 焦りながら慌てて対処したので、簡単ですがご紹介します。
おすすめの方
- 冒頭のエラーメッセージに遭遇した方
環境
Docker Desktopは利用していません。
| 項目 | バージョン |
|---|---|
| Mac | M1 Mac |
| macOS | 13.2.1 |
| SAM CLI | version 1.76.0 |
| docker | 20.10.21-rd, build ac29474 |
| Rancher Desktop | 1.7.0 |
まずは、現状の失敗内容をあらためて把握する
sam init
sam init \
--runtime python3.9 \
--name sam-build-test \
--app-template hello-world \
--no-tracing \
--no-application-insights \
--package-type Zip
sam buildで--use-containerオプションをつけると失敗する
sam buildコマンドは成功しますが、--use-containerオプションをつけると失敗します。
$ sam build --use-container ...(省略)... Build Failed Error: Docker is unreachable. Docker needs to be running to build inside a container.
対処して成功させる(2案)
2つの対処方法があります。
案1: コマンド実行時にDOCKER_HOSTを指定する
次のIssuesを参考にします。
docker infoコマンドを実行し、現在のContextを把握します。
$ docker info Client: Context: rancher-desktop
次に、docker context lsコマンドを実行し、dockerが利用しているcontextの「DOCKER ENDPOINT」を把握します。
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm desktop-linux unix:///Users/userName/.docker/run/docker.sock rancher-desktop * Rancher Desktop moby context unix:///Users/userName/.rd/docker.sock
このDOCKER ENDPOINTを環境変数に設定し、sam buildコマンドを実行します。
$ DOCKER_HOST=unix:///Users/userName/.rd/docker.sock sam build --use-container ...(省略)... Build Succeeded
案2: シンボリックリンクを利用する
次のコメントのように、シンボリックリンクを利用します。
実際のコマンドは下記です。
sudo ln -s "$HOME/.docker/run/docker.sock" /var/run/docker.sock
$ sam build --use-container ...(省略)... Build Succeeded
さいごに
同様の現象に遭遇した方の参考になれば幸いです。






