如何删除Docker中的悬空图像

时间:2018-02-28 04:23:00

标签: docker

如何删除摇晃的Docker镜像?我试过了

if [ "$pool" = "dbpool1" ] || [ "$pool" = "dbpool2" ] || [ "$pool" = "dbpool3" ]
then
echo "DBPool is ${pool}"
sqlplus username/password@database<<EOF
select name from v\$database;
exit
EOF

else 
  echo "No Results"
fi

但它显示

  

尝试连接到Docker守护程序时获得权限被拒绝   在unix上的socket:///var/run/docker.sock:得到   http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D:   拨打unix /var/run/docker.sock:connect:permission denied

4 个答案:

答案 0 :(得分:5)

两个docker命令都需要sudo,否则docker images列表将首先作为您的用户运行。

sudo docker rmi $(sudo docker images -f "dangling=true" -q)

有时sudodocker images查询执行此操作时无法正常工作,您需要在单个sudo下运行整个命令:

sudo sh -c 'docker rmi $(docker images -f "dangling=true" -q)'

答案 1 :(得分:3)

Docker有一个内置命令来清理悬空图像。

sudo docker image prune

要清理未使用的图像和悬空图像,请使用:

sudo docker image prune -a

答案 2 :(得分:0)

简单地做

docker image prune

它将要求您确认

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

键入y,您就完成了...

答案 3 :(得分:0)

如@Matt所述,您在内部命令中缺少sudo。下面会工作

sudo docker rmi $(sudo docker images -f "dangling=true" -q)

要摆脱每次使用sudo的权限,请授予docker用户权限。请按照以下步骤操作

  1. 创建docker组。

    $ sudo groupadd docker
    
  2. 将您的用户添加到docker组。

    $ sudo usermod -aG docker $USER