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