Ubuntu中Docker Desktop不显示sudo权限构建运行的容器如何解决
问题根因
Ubuntu环境下加sudo执行docker命令时,默认连接的是系统级安装的Docker守护进程(dockerd);而Docker Desktop运行在独立的用户态上下文,自带一套隔离的Docker守护进程,两套守护进程的镜像、容器数据完全不互通,因此sudo操作创建的容器不会出现在Docker Desktop界面中。
解决方法
方案1(推荐):配置用户免sudo执行docker命令
这是官方推荐的使用方式,配置后所有docker操作默认对接Docker Desktop的守护进程,资源自动同步到Desktop界面:
- 若系统未创建docker用户组,先执行创建命令:
sudo groupadd docker - 将当前登录用户加入docker用户组:
sudo usermod -aG docker $USER - 刷新用户组权限,无需重启系统即可生效:
newgrp docker - 验证配置:执行
docker ps无需加sudo即可正常返回进程列表,后续构建、运行容器都不需要加sudo,所有资源可直接在Docker Desktop中管理。
方案2:保留sudo使用习惯,切换root用户的docker上下文
如果需要继续用sudo执行docker命令,只需将root用户的docker默认上下文切换为Docker Desktop对应的上下文即可:
- 普通用户权限下执行
docker context ls,找到Docker Desktop对应的上下文,默认名称为desktop-linux。 - 切换root用户的默认docker上下文:
sudo docker context use desktop-linux - 配置完成后,sudo执行docker命令会直接对接Docker Desktop的守护进程,后续构建、运行的容器都可以在Docker Desktop界面正常展示、管理。
注意:配置上下文切换前,通过sudo在系统级dockerd中创建的旧镜像、容器不会自动迁移到Docker Desktop的守护进程中,如果不需要用到系统级dockerd,可以执行
sudo systemctl stop docker docker.socket containerd关闭系统自带的docker服务,避免端口、资源冲突。
内容的提问来源于stack exchange,提问作者Saiful Islam
相关产品推荐
相关产品推荐

