Puncte:1

Operarea sistemului de fișiere montat pe Docker-compose nu este permisă pentru volum

drapel ro

Întâmpin o problemă cu docker-compose, montarea unui volum într-un folder de pe un hard disk montat. Am văzut o mulțime de soluții și le-am încercat sincer pe toate.

Am schimbat permisiunile utilizatorului pe care îl folosesc, pentru root, pentru docker, în cadrul grupurilor respective. Nimic

Operațiunile de scriere funcționează bine, pot scrie un fișier prin python, nu sunt restricționat, dar când rulez docker compose pentru a face un sql db, îmi dă asta:

EROARE: pentru mysql_db Nu se poate porni serviciul mysql_db: eroare în timp ce crearea căii sursei de montare '/db-path-mount': chown /db-path-mount/db-volume-folder/db-one: operațiunea nu este permisă

EROARE: pentru mysql_db Nu se poate porni serviciul mysql_db: eroare în timp ce crearea căii sursei de montare '/db-path-mount': chown /db-path-mount/db-volume-folder/db-one: operațiunea nu este permisă EROARE: Au întâmpinat erori la deschiderea proiectului.

Se pare că depanarea este puțină, am încercat docker-compose up -d și sudo docker-compose up -d, nimic nu se schimbă cu adevărat.

drwxr-xr-x 3 myUser docker 4028276 26 iulie 04:47 db-volume-folder/

și punctul meu de montare (etc/fstab):

UUID=MY_UUID /home/user/my_mount_point auto uid=1001,gid=122,umask=022,implicite 0 1

(gid=122 este docker)
(uid=1001 este utilizator)

Folosesc serverul ubuntu 20

docker-compose.yml:

versiunea: "3.7"
Servicii:
  my_sql_db:
    container_name: my_sql_db
    utilizator: root
    imagine: mysql/mysql-server:latest
    porturi:
      - „1533:3306”
    env_file:
      - secrets/sqlserver.env
      - secrete/sqlpassword.env
    volume:
      - ./db-path-mount/db-volume-folder/db-one:/var/lib/mysql
Artur Meinild avatar
drapel vn
V-ar deranja să partajați „docker-compose.yml” (nu uitați să redactați orice parole etc). De asemenea, punctul de montare este definit în `/etc/fstab`?
Brain Bytes avatar
drapel ro
Sigur, l-am postat, da, punctul de montare este în fstab
Puncte:0
drapel vn

Există câteva lucruri în configurația dvs. pe care le-aș face diferit și voi încerca să subliniez acest lucru în răspunsul meu. Nu pot garanta că va funcționa, dar așa am configurat containerele, așa că sper că poate ajuta.

În primul rând, nu mi-aș monta discul de date cu uid și gid atribute. Aș monta cu atribute implicite, așa:

UUID=MY_UUID /home/user/my_mount_point auto umask=022, implicit 0 1

(Din acest moment, voi folosi /home/user/my_mount_point ca referință de unde este montat discul.)

În al doilea rând, nu înțeleg referința dvs. de volum în docker-compose.yml. as avea asa:

    volume:
      - /home/user/my_mount_point/db-volume-folder/db-one:/var/lib/mysql

Rețineți că aș folosi întotdeauna o cale absolută în docker-compose.yml.

De asemenea, proprietatea ar trebui să se potrivească cu cele ale containerului care rulează, deci folderul db-one ar trebui să fie deținut de root.

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

drwxr-xr-x 3 root root 4028276 26 iulie 04:47 db-one

Rețineți că numele folderului db-one ar trebui să se potrivească cu ultimul folder pe partea stanga în calea de montare a volumului - acesta este folderul în care contează permisiunile.

În cele din urmă, după cum ați observat, docker-compose acceptă, de asemenea, să specificați cu ce utilizator ar trebui să ruleze containerul. Deci, cred că ați putea schimba utilizatorul și apoi să schimbați dreptul de proprietate în consecință.

Deci, dacă schimbați utilizatorul astfel:

versiunea: "3.7"
Servicii:
  my_sql_db:
    container_name: my_sql_db
    utilizator: myUser

Și apoi permisiunile folderului să se potrivească:

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

drwxr-xr-x 3 myUser myUser 4028276 26 iulie 04:47 db-one

Sper că unele dintre aceste instrucțiuni vor funcționa pentru dvs. - vă rugăm să ne anunțați dacă da.

EDITAȚI | ×:

Tocmai am testat containerul MySql cu următorul docker-compose.yml:

versiunea: "3.7"

Servicii:

  my_sql_db:
    container_name: my_sql_db
    utilizator: root
    imagine: mysql/mysql-server:latest
    porturi:
      - „1533:3306”
    mediu inconjurator:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_USER: mysqluser
      MYSQL_PASSWORD: mysqlpassword
    volume:
      - /mnt/zfs/docker-data/mysql-test/db-one:/var/lib/mysql
    reporniți: întotdeauna

Acesta este conținutul folderului /mnt/zfs/docker-data/mysql-test:

/mnt/zfs/docker-data/mysql-test$ ls -la
total 7
drwxr-xr-x 3 rădăcină rădăcină 4 Aug 1 22:02 .
drwxr-xr-x 22 root root 22 Aug 1 21:47 ..
drwxr-xr-x 6 27 sudo 30 august 1 21:59 db-one
-rw-r--r-- 1 rădăcină rădăcină 374 1 august 21:58 docker-compose.yml

În acest fel, containerul se ridică cu succes. Se pare că containerul însuși își schimbă proprietarul în 27:sudo (Bănuiesc că acestea sunt valori implicite).

Dacă schimb utilizatorul în docker-compose.yml la myuser:myuser și, de asemenea, modifica permisiunile pentru folder db-one la myuser:myuser, primesc această eroare când încerc să pornesc containerul:

EROARE: pentru my_sql_db Nu se poate porni serviciul my_sql_db: nu se poate găsi utilizatorul myuser: nu există intrări care se potrivesc în fișierul passwd

Deci, se pare că problema este între utilizatorii potriviți și nu proprietatea sistemului de fișiere. Și dacă primești o altă eroare, probabil că este altceva decât proprietatea sistemului de fișiere - vezi linkul meu în comentarii.

Brain Bytes avatar
drapel ro
Crearea my_db... eroare EROARE: pentru my_db Nu se poate porni serviciul my_db: OCI runtime create failed: container_linux.go:380: pornirea procesului containerului cauzat: process_linux.go:385: aplicarea configurației cgroup pentru proces cauzată: nicio montare cgroup găsită în mountinfo: necunoscut EROARE: pentru my_db Nu se poate porni serviciul my_db: OCI runtime create failed: container_linux.go:380: pornirea procesului containerului cauzat: process_linux.go:385: aplicarea configurației cgroup pentru proces cauzată: nicio montare cgroup găsită în mountinfo: necunoscut EROARE: S-au întâlnit erori la deschiderea proiectului.
Brain Bytes avatar
drapel ro
Am făcut totul ^^ ce am primit
Artur Meinild avatar
drapel vn
Ați putea să vă editați întrebarea cu noile fișiere de configurare și, de asemenea, să vă asigurați că aveți căile corecte de volum - dacă nu, nu vă pot ajuta la depanare.
Artur Meinild avatar
drapel vn
[Această postare pe Stack Overflow](https://stackoverflow.com/questions/66004068/how-to-resolve-no-cgroup-mount-found-in-mountinfo-unknown-error) are sugestii pentru a rezolva noua eroare primesc - ai putea să te uiți la asta? Mulțumiri.
Artur Meinild avatar
drapel vn
Se pare că există o problemă cu instalarea docker sau configurația systemd cgroup.
Brain Bytes avatar
drapel ro
Nu și nu, am încercat tot ce este în acel thread și primesc exact aceeași eroare. Am reinstalat docker de două ori, înainte de a aplica prima sugestie (editarea dvs.) și de a încerca ceea ce este în fir, aceeași eroare (eroare OCI)
Artur Meinild avatar
drapel vn
Ciudat. Pentru referință, am folosit personal [MariaDB de la Linuxserver.io](https://hub.docker.com/r/linuxserver/mariadb) fără probleme, dacă aceasta este o opțiune pentru dvs., poate dați-i o învârtire?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.