Docker, birimleri salt okunur olarak bağlayın


107

Docker ile çalışıyorum ve çok değişen dinamik bir klasör eklemek istiyorum (bu yüzden her yürütme için bir Docker görüntüsü yapmak zorunda kalmayacağım, bu çok maliyetli olurdu), ancak bu klasörün salt okunur olmasını istiyorum . Klasör sahibini başka birine değiştirmek işe yarar. Ancak, bir uygulamaya maruz kalmamayı tercih ettiğim erişim chowngerektiriyor root.

-vBağlamak için bayrak kullandığımda , verdiğim kullanıcı adı ne olursa olsun verir, docker görüntüsünün içinde root olmayan bir kullanıcı oluşturdum, ancak docker çalıştıran kullanıcı olarak birimdeki tüm dosyalar, docker'ı çalıştıran kullanıcı olarak değişir. komut satırından ver, bu yüzden salt okunur dosya ve klasörler yapamıyorum. Bunu nasıl önleyebilirim?

Ayrıca ekledim mustafa ALL=(docker) NOPASSWD: /usr/bin/docker, böylece terminal aracılığıyla başka bir kullanıcıya geçebilirdim, ancak yine de dosyaların kullanıcım için izinleri var.


Burada bir kullanıcının docker konteynerlerini çalıştırmasını sağlamanın ona tam kök erişimi vermekle aynı olduğunu söyleyen bir yorum bırakacağımı düşündüm. Bu, docker belgelerinin güvenlik bölümünde de belgelenmiştir.
Blackclaws

Yanıtlar:


171

Bir hacim salt okunur gerektiğini ekleyerek belirtebilirsiniz :roiçin -vanahtar:

docker run -v volume-name:/path/in/container:ro my/image

Klasörün daha sonra kapta salt okunur ve ana bilgisayarda okuma-yazma olduğunu unutmayın.

2018 Düzenleme

Göre kullanın hacimleri belgeler , şimdi kullanarak birim bağlamaya başka yolu yoktur --mountanahtarı. Bunu salt okunur olarak nasıl kullanacağınız aşağıda açıklanmıştır:

$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image

docker-compose

Aşağıda, salt okunur kapsayıcıları nasıl belirteceğinize bir örnek verilmiştir docker-compose:

version: "3"
services:
  redis:
    image: redis:alpine
    read_only: true

8
izin veriliyor mu, ancak bunları ana bilgisayara geri yazmıyor mu? bu harika olurdu
Ray Foss

9
Hiç ses seviyesi belirtmek istemiyormuşsunuz gibi geliyor.
Alp

1
Sırala ... Dockerfile COPY'yi kullanmak için bir imaj oluşturmaktan veya docker cpbir kapama konteynerinde ayrı bir komut kullanmaktan hoşlanmıyorum .
Ray Foss

5
Belki bunun için daha fazla ayrıntı sağladığınız ve buraya bağladığınız yeni bir soru yaratabilirsiniz?
Alp

Kısa sözdizimini docker redis:alpine:ro
compote

23

docker-compose

Burada salt okunur birimi belirtmenin uygun bir yolu docker-compose:

version: "3.2" # Use version 3.2 or above
services:
  my_service:
    image: my:image
    volumes:
      - type: volume
        source: volume-name
        target: /path/in/container
        read_only: true
volumes:
  volume-name:

https://docs.docker.com/compose/compose-file/#long-syntax-3


2
Gerçekten uygun, ancak burada salt okunur olan şey bir hacimdir, bir kap değil.
Константин Ван

Bu sadece benim için çalışıyor version: "3.2"- Teşekkürler :)
Davey

"Sürüm 3.2 dosya biçiminde eklendi." evet
rybo111

3
Ayrıca yapabilirsiniz - './my-file.txt:/container-readonly-file.txt:ro'altında volumesnot - :rosonunda.
rybo111
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.