AWS SAM CLIで「Docker is unreachable. Docker needs to be running to build inside a container.」のエラーが発生したので対処した
ある日突然、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
さいごに
同様の現象に遭遇した方の参考になれば幸いです。