Ubuntu22.04下Docker构建DNS异常与镜像权限隔离问题求助
Ubuntu 22.04下Docker构建DNS与权限问题解决
问题背景
在Ubuntu 22.04执行以下命令构建Docker镜像:
docker build -t myname ./
报错:
Temporary failure resolving 'archive.ubuntu.com'
尝试操作后仍存在矛盾:
- 创建
/etc/docker/daemon.json配置DNS,无效 - 加
--network host参数执行docker build,依旧报错 - 使用
sudo docker build --network host -t myname ./成功构建,但普通用户执行docker images无结果,必须用sudo才能查看镜像,即使已赋予用户超级用户权限。
解决方案
1. 修复普通用户Docker的DNS问题
步骤1:确保用户加入Docker用户组
执行命令检查当前用户所属组:
groups $USER
如果输出中没有docker组,执行:
sudo usermod -aG docker $USER
执行后重新登录系统,或执行以下命令让权限立即生效:
newgrp docker
步骤2:配置Docker守护进程DNS
编辑/etc/docker/daemon.json文件(不存在则创建):
sudo nano /etc/docker/daemon.json
添加以下内容(使用公共DNS服务器):
{ "dns": ["8.8.8.8", "8.8.4.4"] }
保存后重启Docker服务:
sudo systemctl restart docker
步骤3:验证主机DNS解析
先确保主机本身能正常解析域名:
ping archive.ubuntu.com
如果主机也无法解析,编辑/etc/resolv.conf添加DNS服务器:
sudo nano /etc/resolv.conf
添加:
nameserver 8.8.8.8 nameserver 8.8.4.4
2. 解决镜像可见性问题
完成上述用户组配置后,普通用户应能直接通过docker images查看镜像。若仍无法查看:
检查Docker存储目录权限:
ls -ld /var/lib/docker/
确保目录所属组为docker,权限类似drwx--x--x 13 root docker 4096 ...。若权限不符,执行:
sudo chown -R root:docker /var/lib/docker/
内容的提问来源于stack exchange,提问作者최기창
相关产品推荐
相关产品推荐

