![](/img/trans.png)
[英]docker unable to mount host directory to docker container with docker-compose
[英]Cifs mount in docker container with docker-compose
我想將目錄 cif 掛載到 docker-container 中。 由於有解決方案,我嘗試了 --privileged 標志並設置了所需的功能:
docker-compose.yaml:
version: '2.0'
services:
mounttest:
image: test
privileged: true
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
restart: unless-stopped
container_name: test
mem_limit: 500m
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/apps/docker-test/
Dockerfile:
FROM ubuntu:18.04
ADD . /apps/docker-test/
# APT-GET
RUN apt-get update && apt-get install -y \
sudo \
cifs-utils
# CHMOD SHELL SCRIPTS
RUN chmod 0755 /apps/docker-test/run.sh
RUN chmod 0755 /apps/docker-test/build.sh
RUN /apps/docker-test/build.sh
CMD bash /apps/docker-test/run.sh
構建.sh:
mkdir -p /test_folder
echo "Mount"
sudo mount -t cifs -o username=XXX,password=XXX,workgroup=XX //server/adress$ /test_folder
run.sh 啟動一個 python 腳本
這不起作用,而是:
docker-compose build
給我錯誤:
Unable to apply new capability set
我發現的所有解決方案都只提到了設置的特權標志或功能。 任何人都可以幫忙嗎?
發生此錯誤是因為您嘗試在build
步驟中安裝設備。 在這一點上,這些功能不可用於構建容器,它似乎是作為一個標志推出,用於在構建套件中禁用安全性,而不是在構建時啟用自定義功能。
通常的做法是在開始構建過程時准備好 CIFS 掛載,因為它不會暴露任何身份驗證、設備或掛載點,而且 docker 更容易處理更改並對它們做出反應(因為構建過程努力在構建之前緩存所有內容)。
如果你仍然想這樣做,你需要一些額外的步驟來啟用來自buildkitd
和docker buildx
的不安全標志:
請注意,截至今天 (2020-09-09),支持仍處於試驗階段,可能會發生不可預見的后果。
~/.docker/config.json
添加密鑰"experimental":"enabled"
來啟用實驗性功能security.insecure
權利的構建器:docker buildx create --driver docker-container --name local \
--buildkitd-flags '--allow-insecure-entitlement security.insecure' \
--use
Dockerfile
以使用實驗性語法:# syntax = docker/dockerfile:experimental
RUN --security=insecure /apps/docker-test/build.sh
--allow security.insecure
標志構建您的 docker 鏡像:docker buildx build --allow security.insecure .
這樣你的構建將能夠打破安全限制。 我必須重申,出於以下幾個原因,這不是推薦的做法:
記住這一點並快樂安裝:)
我找到的答案是將 mount 命令放入 run.sh 文件中。 由於 Dockerfile 中的命令(或 CMD)僅在運行時執行
docker-compose up
只有在預先完成的構建已經完成后才會執行安裝。
因此,在啟動python腳本之前,先執行mount命令。 就我而言,這僅適用於將特權標志設置為 true 的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.