2017-02-09 22 views
0

Докер, в котором я работаю, и моя команда часто заканчиваются из космоса. Обычно мы исправляем это, удаляя оборванные изображения. Но сейчас на данный момент есть 5 запущенных контейнеров с 7 изображениями и память заполнена. Даже файл журнала не может записать свой вывод. Так, как я описал, есть 15 изображений (docker images - all), но когда я набираю docker info, он говорит, что есть 132 изображения.Docker: некоторые призрачные изображения испорчены с памятью

[email protected]:/var/lib/docker# docker info 
Containers: 10 
Images: 132 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 154 
Dirperm1 Supported: true 
Execution Driver: native-0.2 
Logging Driver: json-file 
Kernel Version: 3.16.0-30-generic 
Operating System: Ubuntu 14.04.3 LTS 
CPUs: 2 
Total Memory: 15.67 GiB 
Name: dockersrv 
ID: `` 
WARNING: No swap limit support 

Насколько я помню, кто-то помог удалить контейнер реестра, и мы создали новый. Мои мысли в том, что все эти изображения связаны со старым реестром. Поэтому любая идея, как удалить их и освободить место. Любые другие советы о том, как увеличить свою память и что делать отдельно, удаляя оборванные изображения и старые контейнеры, будут высоко оценены.

+0

'docker images -a' покажет все ваши изображения. Но это также будет содержать дочерние образы ваших существующих изображений. С 'docker rmi $ (docker images | grep"^ "| awk" {print $ 3} ")' вы можете удалить все неиспользуемые изображения с помощью тега : , но я думаю, вы уже это сделали. – lvthillo

+0

Когда вы немного исследуете 'du -sh'. Какая папка внутри '/ var/lib/docker /' содержит много гигабайт? Большую часть времени болтают тома. – lvthillo

+0

весь каталог - 60 концертов, 15 из них предназначены для aufs и 40 для папки томов. – Wosh

ответ

1

docker images -a покажет все ваши изображения. Но это также будет содержать дочерние образы ваших существующих изображений.

Первые шаги, чтобы «очистить» среду вашего докера, - это удалить остановленные контейнеры докеров, которые отображаются при выполнении docker ps -a. Вы не можете удалять изображения докеров, если существует экземпляр изображения (контейнера). Даже когда он больше не работает.

docker rm -v `docker ps -a` 

После удаления остановленных контейнеров вы можете удалить неиспользуемые изображения с, например:

docker images -q |xargs docker rmi 

Как вы можете видеть, что есть несколько способов/команды удалять свои контейнеры и изображения. Опция -v (используется при удалении контейнеров) удалит объем контейнера, который также является важной частью.

Объемы докеров хранятся в /var/lib/docker/volumes, и это содержимое вашего контейнера. В этом вопросе была проблема с удалением старого реестра. Чем очень важно проверить, удаляется ли объем реестра.

В новых версиях докер вы можете удалить оборванных тома с:

docker volume rm `docker volume ls -q -f dangling=true` 

Вы также можете просто удалить папку правой + рестарт докер.

sudo rm -r /var/lib/docker/volumes/the-specific-volume