Change Docker Root Dir на Red Hat Linux?

С zsh:

typeset -A files
for f (**/*(D.oL)) files[$f:t]=$f
printf '%s\n' $files

Будет работать, какие бы байты или символы (например, пробел, новая строка. ...), которые могут содержать имена файлов.

С инструментами GNU:

find . -type f -printf '%s/%f/%P\0' |
  sort -zrn |
  LC_ALL=C sort -zt/ -uk2,2 |
  tr '\0\n' '\n\0' |
  cut -d/ -f3- |
  tr '\0' '\n'

Если вы хотите удалить дубликаты, с zsh:

allfiles=(**/*(D.oL))
typeset -A best
for f ($allfiles) best[$f:t]=$f
bestfiles=($best)
dups=(${allfiles:|bestfiles})
rm -rf -- $dups

Описание некоторых возможностей zsh:

  • typeset -A best: объявляет переменную ассоциативного массива, как в ksh93. Последние версии bash также поддерживают его.
  • **/*: рекурсивный globbing. Введена в zsh в начале девяностых, сейчас встречается в некоторых других оболочках с вариациями.
  • (D.oL): квалификаторы globbing. Еще одно изобретение zsh, пока не скопированное другими оболочками, хотя это важный спутник рекурсивного globbing. Используется для дополнительной квалификации глобуса. D для включения точечных файлов, для включения только обычных файлов, oL для упорядочивания по длине (размер в байтах).
  • ${file:t}: как и в (t)csh, расширяет до tail части имени файла (основного имени).
  • ${a:|b} расширяется до элементов a, которые не входят в b. (a - b).
4
01.07.2018, 16:33
2 ответа

Остановите все запущенные контейнеры Docker, а затем демон Docker. Переместите каталог «/var/lib/docker» в то место, где вы хотите хранить эти данные. Для вас это будет:

mv /var/lib/docker /data/

, а затем создайте символическую ссылку для этого каталога докеров в пути /var/lib:

ln -s /data/docker /var/lib/docker

Запустить демон Docker и контейнеры.

6
27.01.2020, 20:53

Документация Docker по управлению демоном Docker предлагает независимый от платформы способ сделать это:

отредактируйте файл /etc/docker/daemon.json, чтобы он содержал строку

{
    "data-root": "/mnt/docker-data",
    (...)
}

, где /mnt/docker-data— это каталог, в котором вы хотите разместить образы и контейнеры Docker.

Тогда

sudo systemctl restart docker

Вы можете проверить, работает ли он, запустив

docker info

и найдите содержимое строки, начинающейся с Docker Root Dir:.

6
27.01.2020, 20:53

Теги

Похожие вопросы