更多内容,请查看博客原文:解决sudo docker报错command not found

我们在执行docker命令时,比如docker ps时,可能会遇到如下command not found的错误。

sudo docker ps
[sudo] password for simon: 
sudo: docker: command not found

这是什么原因呢?我们看看如下两条命令。

env | grep PATH
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/simon/.local/bin:/home/simon/bin

sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin

发现环境变量PATH是不相同的。之所以出现sudo: docker: commmand not found的问题,是因为在PATH=/sbin:/bin:/usr/sbin:/usr/bin下面找不到docker程序。

可以添加一个docker组来解决。

如果是通过二进制安装的话,就不会自动生成docker组,所以需要我们自己生成。

sudo groupadd docker

同时把用户加入到这个组中,并重启docker。

sudo gpasswd -a simon docker
Adding user simon to group docker
sudo systemctl restart docker

用户以docker组重新登录一下

newgrp docker

这时,就可以正常使用docker命令了。

那我们会问,如果不把用户加入docker组,不加sudo执行docker命令又会怎样呢?

docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied

会发现当我们连接socket的时候,没法访问/var/run/docker.sock这个文件。

更多内容,请查看博客原文:解决sudo docker报错command not found

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐