常见问题

常见问题

常见问题及解决方法

提示缺少权限 permission denied

问题及分析

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.46/version": dial unix /var/run/docker.sock: connect: permission denied

原因是 docker 进程使用的是 Unix Socket,而不是 TCP 端口 默认情况下 Unix Socket 属于 root 用户,需要提权

解决方法

新建 docker用户组 ,并将当前用户添加到 docker用户组 中。

shell
1
2
3
sudo groupadd docker # 新建docker用户组
sudo gpasswd -a $USER docker # 将当前用户添加到docker用户组
sudo newgrp docker # 更新docker用户组

Uncomplicated Firewall (UFW) 防火墙失效问题

问题及分析

如果系统中使用了 Uncomplicated Firewall (UFW) 防火墙。

Docker 和 UFW 的组合可能回带来一些安全问题。

因为 UFW 是 iptables 的一个上层封装,底层功能依旧还是 iptables 实现。

而 Docker 实际上绕过了 UFW 并直接修改了 iptables,所以一个容器可以绑定一个端口。

这就意味着,所有你设置的 UFW 规则都将在 Docker 容器中失效。

解决方法

禁用 Docker 直接操作 iptables

shell
1
2
sudo vi /etc/default/docker
DOCKER_OPTS="--iptables=false"