簡體   English   中英

我希望Docker非root用戶能夠寫入持久卷嗎? 我怎樣才能解決這個問題?

[英]I want a Docker non-root user to be able to write to a persistent volume? How can I fix this?

我正在設置一個運行空間來運行Apache Airflow。 我希望目錄/ airflow擁有並因此可由用戶Airflow寫入。 我的Dockerfile看起來像這樣:

FROM salimfadhley/testpython:latest AS base_python
COPY . /project
WORKDIR /project/src
RUN SLUGIFY_USES_TEXT_UNIDECODE=yes python -m pip install -e /project/src

FROM base_python AS application
ENV AIRFLOW_HOME=/airflow
RUN useradd -G sudo -u 1000 airflow
VOLUME /airflow
WORKDIR /airflow
RUN chown airflow:airflow /airflow
USER airflow

不幸的是,當我嘗試寫入該目錄時,出現錯誤:

airflow@fc047510b631:/airflow$ touch hello
touch: cannot touch 'hello': Permission denied
airflow@fc047510b631:/airflow$ cd ..
airflow@fc047510b631:/$ ls -l | grep airflow
drwxr-xr-x   2 root    root 4096 Feb 12 13:38 airflow
drwxr-xr-x   6 airflow sudo 4096 Feb 12 13:35 project
drwxr-xr-x   4 airflow sudo 4096 Feb 12 11:12 src

有沒有一種方法可以解決此問題,從而使conainer中的目錄/ airflow是一個持久卷,該持久卷由用戶“ airflow”擁有並因此可寫。

謝謝!

卷使用卷源的uid / gid以及文件許可權進行安裝。 如果是主機裝載,則需要更改主機目錄上的uid / gid和權限。 如果是命名卷,則需要修改該命名卷內的權限。

正如您在Dockerfile中所做的那樣,修復映像中的權限所得到的是使命名的卷以正確的權限顯示。 Docker將使用圖像中的內容(包括文件所有權和權限)初始化一個空的命名卷。 但是,一旦使用內容初始化了該命名卷,則對該命名卷的進一步使用將跳過初始化步驟,您將看到以前使用的文件和權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM