🐳

ローカルでTestcontainers使用時にコンテナが作成できずにエラーになった

2024/01/07に公開

はじめに

Testcontainersを使ってRepositoryのインテグレーションテストを書こうとしたときに、コンテナが作成されずにエラーが発生しました。

このエラーの解決策をログとして残しておきます。

環境情報

Server: Docker Desktop 4.24.2 (124339)
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:31:36 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.22
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

エラー情報

Testcontainersを使ったテストを実行したときに発生したエラーは以下の通りです。

 Exception in thread "zio-fiber-" java.lang.IllegalStateException: Previous attempts to find a Docker environment failed. Will not retry. Please see logs and check configuration

解決策

/var/run/docker.sock が存在するか確認するとソケットがなかったので、以下のようにユーザー所有のディレクトリのソケットのシンボリックリンクを作ることで解決しました。

sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock

以下のコメントによると、だいぶ前にユーザーフレンドリーにするためにユーザ所有のディレクトリにソケットを作るようになっていたようです。

Thanks for the report! We're trying to make Docker Desktop more userspace-friendly (e.g., fewer root privileges). As part of that, we're migrating the sockets to user-owned directories rather than root-owned directories (like /var/run). Desktop 4.13 no longer installs a socket under /var/run.

Discussion