Рейтинг:1

Операция смонтированной файловой системы Docker не разрешена для тома

флаг ro

У меня проблема с docker-compose, он монтирует том в папке на подключенном жестком диске. Я видел много решений и честно попробовал их все.

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

Операции записи работают нормально, я могу написать файл через python, я не ограничен, но когда я запускаю docker compose для создания sql db, он дает мне это:

ОШИБКА: для mysql_db не удается запустить службу mysql_db: ошибка во время создание исходного пути монтирования '/db-path-mount': chown /db-path-mount/db-volume-folder/db-one: операция не разрешена

ОШИБКА: для mysql_db не удается запустить службу mysql_db: ошибка во время создание исходного пути монтирования '/db-path-mount': chown /db-path-mount/db-volume-folder/db-one: операция не разрешена ОШИБКА: Обнаружены ошибки при запуске проекта.

Кажется, что устранение неполадок скудно, я попробовал docker-compose up -d и sudo docker-compose up -d, ничего не изменилось.

drwxr-xr-x 3 myUser docker 4028276 26 июля 04:47 db-volume-folder/

и моя точка монтирования (etc/fstab):

UUID=MY_UUID /home/user/my_mount_point auto uid=1001,gid=122,umask=022, по умолчанию 0 1

(gid=122 — это докер)
(uid=1001 — пользователь)

Я использую сервер Ubuntu 20

докер-compose.yml:

версия: "3.7"
Сервисы:
  моя_sql_db:
    имя_контейнера: my_sql_db
    пользователь: корень
    изображение: mysql/mysql-сервер: последний
    порты:
      - "1533:3306"
    env_file:
      - секреты/sqlserver.env
      - секреты/sqlpassword.env
    тома:
      - ./db-path-mount/db-volume-folder/db-one:/var/lib/mysql
Artur Meinild avatar
флаг vn
Не могли бы вы поделиться своим `docker-compose.yml` (не забудьте отредактировать любые пароли и т. д.). Кроме того, определена ли точка монтирования в вашем `/etc/fstab`?
Brain Bytes avatar
флаг ro
Конечно, выложил, да точка монтирования в fstab
Рейтинг:0
флаг vn

В вашей настройке есть несколько вещей, которые я бы сделал по-другому, и я попытаюсь изложить это в своем ответе. Я не могу гарантировать, что это сработает, но я так настроил свои контейнеры, так что, надеюсь, это поможет.

Во-первых, я бы не стал монтировать свой диск данных с помощью жидкость и Гид атрибуты. Я бы монтировал с атрибутами по умолчанию, например так:

UUID=MY_UUID /home/user/my_mount_point auto umask=022, по умолчанию 0 1

(С этого момента я буду использовать /home/пользователь/my_mount_point в качестве ссылки с того места, где установлен ваш диск.)

Во-вторых, я не понимаю вашу ссылку на объем в докер-compose.yml. У меня было бы так:

    тома:
      - /home/user/my_mount_point/db-volume-folder/db-one:/var/lib/mysql

Обратите внимание, что я всегда буду использовать абсолютный путь в докер-compose.yml.

Кроме того, права собственности должны совпадать с владельцами запущенного контейнера, поэтому папка дб-один должен принадлежать root.

myUser@ubuntu:~/my_mount_point/db-volume-folder$

drwxr-xr-x 3 root root 4028276 26 июля 04:47 db-one

Обратите внимание, что имя папки дб-один должно соответствовать последняя папка на левая сторона в пути монтирования тома - это папка, где права имеют значение.

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

Итак, если вы измените пользователя следующим образом:

версия: "3.7"
Сервисы:
  моя_sql_db:
    имя_контейнера: my_sql_db
    пользователь: мой пользователь

И затем права доступа к папке соответствуют:

myUser@ubuntu:~/my_mount_point/db-volume-folder$

drwxr-xr-x 3 myUser myUser 4028276 26 июля 04:47 db-one

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

РЕДАКТИРОВАТЬ:

Я только что протестировал контейнер MySql со следующим файлом docker-compose.yml:

версия: "3.7"

Сервисы:

  моя_sql_db:
    имя_контейнера: my_sql_db
    пользователь: корень
    изображение: mysql/mysql-сервер: последний
    порты:
      - "1533:3306"
    среда:
      MYSQL_ROOT_PASSWORD: совершенно секретно
      MYSQL_USER: пользователь mysql
      MYSQL_PASSWORD: пароль mysql
    тома:
      - /mnt/zfs/docker-data/mysql-test/db-one:/var/lib/mysql
    перезапуск: всегда

это содержимое папки /mnt/zfs/докер-данные/mysql-тест:

/mnt/zfs/docker-data/mysql-test$ ls -la
всего 7
drwxr-xr-x 3 root root 4 1 авг 22:02 .
drwxr-xr-x 22 корень корень 22 авг 1 21:47 ..
drwxr-xr-x 6 27 sudo 30 1 августа 21:59 db-one
-rw-r--r-- 1 root root 374 1 августа 21:58 docker-compose.yml

Таким образом, контейнер успешно поднимается. Похоже, что сам контейнер меняет владельца на 27:судо (Я думаю, это значения по умолчанию).

Если я изменю пользователя в докер-compose.yml к мой пользователь: мой пользователь а также изменить права на папку дб-один к мой пользователь: мой пользователь, я получаю эту ошибку при попытке запустить контейнер:

ОШИБКА: для my_sql_db не удается запустить службу my_sql_db: невозможно найти пользователя myuser: нет соответствующих записей в файле passwd

Таким образом, проблема заключается в совпадении пользователей, а не во владении файловой системой. И если вы получите еще одну ошибку, это, вероятно, что-то другое, чем владение файловой системой — см. мою ссылку в комментариях.

Brain Bytes avatar
флаг ro
Создание my_db... ошибка ОШИБКА: для my_db Не удается запустить службу my_db: сбой создания среды выполнения OCI: container_linux.go:380: запуск процесса контейнера вызван: process_linux.go:385: применение конфигурации cgroup для вызванного процесса: монтирование cgroup не найдено в mountinfo: неизвестно ОШИБКА: для my_db Не удается запустить службу my_db: сбой создания среды выполнения OCI: container_linux.go:380: запуск процесса контейнера вызван: process_linux.go:385: применение конфигурации cgroup для вызванного процесса: монтирование cgroup не найдено в mountinfo: неизвестно ОШИБКА: обнаружены ошибки при запуске проекта.
Brain Bytes avatar
флаг ro
Сделал все ^^ что я получил
Artur Meinild avatar
флаг vn
Не могли бы вы отредактировать свой вопрос с новыми файлами конфигурации, а также убедиться, что у вас есть правильные пути к томам - если нет, я не могу помочь в устранении неполадок.
Artur Meinild avatar
флаг vn
[В этом сообщении о переполнении стека] (https://stackoverflow.com/questions/66004068/how-to-resolve-no-cgroup-mount-found-in-mountinfo-unknown-error) есть предложения по устранению новой ошибки, которую вы получают - не могли бы вы изучить это? Спасибо.
Artur Meinild avatar
флаг vn
Возможно, проблема связана с установкой докера или конфигурацией systemd cgroup.
Brain Bytes avatar
флаг ro
Нет и нет, пробовал все, что есть в этой теме, и я получаю ту же самую ошибку. Я дважды переустанавливал докер, прежде чем применить первое предложение (ваше редактирование) и попробовать то, что в теме, та же ошибка (ошибка OCI)
Artur Meinild avatar
флаг vn
Странный. Для справки, я лично использовал [MariaDB из Linuxserver.io] (https://hub.docker.com/r/linuxserver/mariadb) без проблем, если это вариант для вас, возможно, попробовать?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.