sudo で実行するコマンドに環境変数を指定したい

背景

たいていの場合は必要最小限の環境変数しか設定されないことになっています。

https://www.sudo.ws/man/1.8.13/sudoers.man.html

Command environment

By default, the env_reset option is enabled. This causes commands to be executed with a new, minimal environment.

普段は docker の接続先を環境変数で制御してるので、 sudo docker すると接続先を見つけられなくなってしまいました。

sudo docker version
Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        a872fc2f86
 Built:             Tue Oct  8 00:59:36 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解決方法

普通にコマンドを実行するときのように環境変数を指定するだけでした。

sudo $(env | grep DOCKER | tr '\n' ' ') docker version
Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.39 (downgraded from 1.40)
 Go version:        go1.12.10
 Git commit:        a872fc2f86
 Built:             Tue Oct  8 00:59:36 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.9
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.11.13
  Git commit:       039a7df9ba
  Built:            Wed Sep  4 16:55:50 2019
  OS/Arch:          linux/amd64
  Experimental:     false