recherche

Maison  >  Questions et réponses  >  le corps du texte

docker运行中容器不释放磁盘空间

大家好,想咨询一下,docker是如何管理磁盘的呢?我有个jenkins的应用放在了一个容器里面,运行一段时间后容器变得非常巨大,然后我在容器中删除了部分大的文件,df -h发现不管是容器的虚拟分区还是宿主机的磁盘都没有释放任何空间出来,依旧是42%(容器)和50%(宿主)的磁盘占用,这是什么原因造成的呢?该如何解决呢?

PHP中文网PHP中文网2829 Il y a quelques jours1236

répondre à tous(1)je répondrai

  • 大家讲道理

    大家讲道理2017-04-24 09:14:58

    Besoin de comprendre Dockerimage et conteneur. Bien entendu, cela s’entend du point de vue du système de fichiers.

    Les images Docker sont des fichiers en lecture seule. Pour souligner, il est en lecture seule, nous ne pouvons donc pas réellement supprimer les fichiers de l'image. Lorsque vous le supprimez, il vous suffit de faire une marque pour que le conteneur ne puisse pas voir le fichier. Ce fichier existe donc toujours dans l’image et occupe de l’espace disque.

    Le conteneur Docker est une couche en lecture-écriture basée sur l'image, qui est lisible et inscriptible. Lors de la lecture et de l'écriture d'un fichier, le fichier est copié de l'image vers la couche de lecture-écriture du conteneur, puis le fichier copié est lu et écrit, tandis que le fichier d'origine est toujours dans l'image. De plus, la couche lecture-écriture de ce conteneur occupe également de l'espace disque.

    Nous ne pouvons donc libérer de l'espace disque qu'en supprimant les images et les conteneurs.

    Supprimer l'image

    sudo docker rmi <Image Name>

    Supprimer le conteneur

    sudo docker rm <Container Name>

    Supprimer tous les miroirs

    sudo docker rmi -a

    Supprimer tous les conteneurs

    sudo docker rm -a

    De plus, le volume de données du conteneur occupe également de l'espace disque. Vous pouvez supprimer le volume expiré via la commande suivante :

    sudo docker volume rm $(docker volume ls -qf dangling=true)

    Bien sûr, la manière la plus violente est de supprimer le répertoire dans lequel Docker stocke les images, les conteneurs et les volumes de données (/var/lib/docker)

    À utiliser avec prudence ! ! ! :

    sudo service docker stop
    sudo rm -rf /var/lib/docker
    sudo service docker start

    répondre
    0
  • Annulerrépondre