попытка изменить корень данных docker не удалась - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь установить для моего каталога хранилища докера значение, отличное от значения по умолчанию, что я делал на других машинах:

/ etc / docker / daemon.json:

{
    "data-root": "/mnt/x/y/docker_data"
}

где каталог хранилища выглядит как

jeremyr@snorble:~$ ls -ltr /mnt/x/y
total 4
drwxrwxrwx 11 jeremyr  5001  122 Mar 19 08:14 docker_data

с файлом daemon.json на месте, sudo systemctl restart docker хиты Job for docker.service failed (без этого daemon.json докер перезапускается нормально, а docker run hello-world работает нормально).с установленным daemon.json journalctl -xn показывает

Mar 25 14:20:33 bolt88 systemd[1]: docker.service start request repeated too quickly, refusing to start.
Mar 25 14:20:33 bolt88 systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.service has failed.
-- 
-- The result is failed.
Mar 25 14:20:33 bolt88 systemd[1]: Unit docker.service entered failed state.
Mar 25 14:20:34 bolt88 sudo[23961]: jeremyr : TTY=pts/18 ; PWD=/home/jeremyr ; USER=root ; COMMAND=/bin/journalctl -xn
Mar 25 14:20:34 bolt88 sudo[23961]: pam_unix(sudo:session): session opened for user root by jeremyr(uid=0)

, в то время как systemctl status docker.service просто показывает code=exited, status=1/FAILURE

и в dmesg я вижу это:

1547:[Mon Mar 25 14:21:41 2019] aufs au_opts_verify:1570:dockerd[20714]: dirperm1 breaks the protection by the permission bits on the lower branch
1548-[Mon Mar 25 14:21:41 2019] device veth34d1dfd entered promiscuous mode
1549-[Mon Mar 25 14:21:41 2019] IPv6: ADDRCONF(NETDEV_UP): veth34d1dfd: link is not ready
1550-[Mon Mar 25 14:21:41 2019] IPv6: ADDRCONF(NETDEV_CHANGE): veth34d1dfd: link becomes ready
1551:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered forwarding state
1552:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered forwarding state
1553:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered disabled state
1554-[Mon Mar 25 14:21:41 2019] device veth34d1dfd left promiscuous mode
1555:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered disabled state
1556-[Mon Mar 25 14:21:59 2019] systemd-sysv-generator[20958]: Ignoring creation of an alias umountiscsi.service for itself

Docker версия 17.05.0-ce, сборка 89658be, на установке Debian 8.8.

Кто-нибудь знает, почему докер не позволяет использовать этот каталог в качестве корня данных?

Ответы [ 3 ]

2 голосов
/ 26 марта 2019

Что-то не так в данных docker_data.

  • Решение:

    1. удалите файл /etc/docker/daemon.json.
    2. Запустите докер.
    3. скопируйте содержимое / var / lib / docker в путь, который вы указали в /etc/docker/daemon.json.
    4. положить обратно файл /etc/docker/daemon.json и перезапустить докер.
0 голосов
/ 26 июля 2019

TD; DR - работало на Ubuntu 18.04 незадолго до поста

следуйте инструкциям:

sudo systemctl stop docker
sudo rsync -axPS /var/lib/docker/ /mnt/x/y/docker_data #copy all existing data to new location
sudo vi /lib/systemd/system/docker.service # or your favorite text editor

в файле docker.service найдите одну строку, подобную этой:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

добавить --data-root /mnt/x/y/docker_data к нему (в одну строку):

ExecStart=/usr/bin/dockerd --data-root /mnt/x/y/docker_data -H fd:// --containerd=/run/containerd/containerd.sock

сохранить и выйти, затем

sudo systemctl daemon-reload
sudo systemctl start docker
docker info | grep "Root Dir"

последняя команда должна вывести: Docker Root Dir: /mnt/x/y/docker_data

Вот и все, должен был сделать здесь.


Версия Too Long , если вы Do хотите Read :

после некоторого расследования я обнаружил устаревших статей, включая эту, в них упоминалось некое уверенное решение, это типичные страницы:

прочитайте это решение на дюжине веб-страниц, вдохновившись:

Да, graph => data-root, а --graph - это просто длинная форма -g, поэтому я попробовал эту замену в опции решения add -g в докере . услуга и Та да ~

0 голосов
/ 26 марта 2019

Ну, я не эксперт по докеру, но я вижу, что "dirperm1 нарушает защиту битами разрешений в нижней ветви" в вашем журнале.И я тоже это вижу."drwxrwxrwx 11 jeremyr 5001 122 Mar 19 08:14 docker_data"

Насколько я понимаю, демону docker требуется разрешение на доступ к каталогу.Означает ли 5001 группу «docker»?

Однако, если вы запустили демон с правами root, этого не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...