Saya memiliki wadah Docker dengan volume bernama yang berjalan pada pengguna non-root dimulai dengan perintah berikut:
docker run -v backup:/backup someimage
Pada gambar, ada skrip cadangan yang mencoba menyimpan file di /backup direktori tetapi gagal. Dipasang backup volume dalam /backup dir milik pengguna root.
Cara mengubah izin untuk /backup direktori?
----- EDIT1:
mcve di bawah ini:
Jalankan kontainer docker dengan Gerrit:
docker run -v backupgerrit:/backup --name gerrit gerritcodereview/gerrit
Sekarang pada jendela terminal lain mencoba untuk menyimpan sesuatu di /backup dir:
Solusi kerja di sini. Docker pada pengaturan default menyimpan data volume di /var/lib/docker/volumes/. Mendasarkan pada contoh dari file pertanyaan backupgerrit bernama volume yang tetap /var/lib/docker/volumes/backupgerrit/_data. Dir penting adalah _data dan izin Nya. Dalam contoh ini, wadah Gerrit menggunakan pengguna dengan id 1000. Solusinya adalah dengan mengatur kepemilikan ini _data dir untuk 1000:1000.
# chown 1000:1000 /var/lib/docker/volumes/backupgerrit/_data# ls -ln /var/lib/docker/volumes/backupgerrit/drwxr-xr-x 2 1000 1000 4096 Feb 25 12:19 _data/
Dan ini adalah bagaimana tampilannya dari sisi wadah:
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESeaa816980be5 gerritcodereview/gerrit "/entrypoint.sh" 31 minutes ago Up 31 minutes 8080/tcp, 29418/tcp gerrit# docker exec gerrit iduid=1000(gerrit) gid=1000(gerrit) groups=1000(gerrit)# docker exec gerrit ls -l / | grep backupdrwxr-xr-x 2 gerrit gerrit 4096 Feb 25 11:19 backup# docker exec gerrit touch /backup/testfile# docker exec gerrit ls -l /backuptotal 0-rw-r--r-- 1 gerrit gerrit 0 Feb 25 11:19 testfile
Izin dari _data dir gigih sampai menghapus volume dengan