如何解决Cif使用docker-compose
我想将目录挂载到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
build.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
步骤内安装设备。此时,这些功能aren't available for the build container to use似乎正在以a flag for disabling security at buildkit的形式推出,而不是在构建时启用自定义功能。
通常的做法是在开始构建过程时准备好CIFS挂载,因为它不会公开任何身份验证,设备或挂载点,并且Docker更容易处理更改并做出响应它们(因为构建过程会在构建之前努力缓存所有内容)。
如果您仍然想这样做,则需要一些额外的步骤来启用buildkitd
和docker buildx
上的不安全标志:
请记住,截至今天(2020年9月9日),该支持仍处于试验阶段,可能会发生无法预料的后果。
- 确保您使用的是docker 19.03或更高版本。
- 通过将密钥
"experimental":"enabled"
添加到~/.docker/config.json
来启用实验性功能 - 创建并使用启用了
security.insecure
授权的构建器:
docker buildx create --driver docker-container --name local \
--buildkitd-flags '--allow-insecure-entitlement security.insecure' \
--use
- 通过在第一行之前添加 ,将
Dockerfile
更改为使用实验性语法:
# syntax = docker/dockerfile:experimental
- 更改Dockerfile指令,使其在不受安全约束的情况下运行代码:
RUN --security=insecure /apps/docker-test/build.sh
- 使用BuildKit和
--allow security.insecure
标志构建您的docker映像:
docker buildx build --allow security.insecure .
这样,您的构建将可以摆脱安全约束。 我必须重申,出于以下几个原因,不建议您这样做:
- 它将公开其他图像的构建步骤,以扩大该许可漏洞。
- 由于构建器使用的是不安全的功能,因此构建器无法正确缓存该层。
请记住这一点,并高兴地安装它:)
,我找到的答案是将mount命令放入run.sh文件。因为Dockerfile中的命令(或CMD)仅在运行时执行
docker-compose up
仅在预先完成构建之后,才执行挂载。
因此,在启动python脚本之前,将执行mount命令。 就我而言,这只能在将特权标志设置为true时起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。