Назад | Перейти на главную страницу

Как указать Docker хранить и запускать контейнеры на внешнем диске

Я запускаю Docker в Ubuntu Linux. у меня есть Dockerfile это приносит много данных из других источников. Я положил Dockerfile на внешнем диске, который я подключил к локальной файловой системе (ext4). Затем я запустил сборку из файловой системы внешнего диска.

docker build -t mycontainer .

Я наблюдал за использованием диска, пока строился контейнер. Весь диск использовался в корневой файловой системе, а не в подключенном диске.

Я прочитал несколько статей об изменении корня / базы Docker с /var/lib/docker в другое место, но пока все, что я получаю, это docker.service: Failed with result 'exit-code'.

Я также попытался добавить -g options в /lib/systemd/system/docker.service файл:

ExecStart=/usr/bin/dockerd -H fd://  # original
ExecStart=/usr/bin/dockerd -g /new/path/docker -H fd://  # updated

Это тоже не помогло.

Как я могу сказать Docker, что нужно использовать внешний диск?

Несколько вещей помогли мне заставить это работать. Сначала я монтировал внешнюю файловую систему в домашнем каталоге, что могло вызвать некоторые проблемы с разрешениями. Итак, я перемонтировал файловую систему под /mnt и обновил разрешения и права собственности следующим образом:

# chown -R root:root /mnt/external-drive/docker-base
# chmod 701 /mnt/external-drive/docker-base

Затем я создал /etc/docker/daemon.json файл с таким содержимым:

{
    "graph": "/mnt/external-drive/docker-base"
}

Я перезапустил докер-сервис, и вроде все хорошо. Делая docker build и внешний диск получает все содержимое.