我正在尝试在没有特权构建器的情况下构建 Docker 映像,因此DinD
不是一种选择。我现在发现了两种使用kaniko或img实现这一目标的方法。
它们都在我的本地 Docker 设置中工作并实现了该目标:
docker run --rm -it --cap-drop=all --cap-add=setuid --cap-add=setgid \
--name img \
--volume "$(pwd):/home/user/src:ro" \
--workdir /home/user/src \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
r.j3ss.co/img:v0.5.11 build -t user/myimage .
docker run --rm -it --cap-add=chown --cap-add=fowner --cap-add=setgid --cap-add=setuid --cap-add=dac_override \
--name kaniko \
-v "$(pwd):/workspace:ro" \
gcr.io/kaniko-project/executor:v1.7.0 \
--dockerfile /workspace/Dockerfile \
--context dir:///workspace/ \
--no-push
img
映像以非 root 用户在内部运行构建器进程,但uid 1000
需要seccomp
和apparmor
设置,而kaniko
容器在内部运行构建器进程root user
,但不需要seccomp
和apparmor
更改。
我现在想知道哪个被认为更安全,运行一个容器,其中的进程由 root 用户运行,或者运行一个普通用户但使用seccomp=unconfined
and运行的容器apparmor=unconfined
。
如果有人可以帮助我并给我一些线索,那就太好了。
我的直觉告诉我kaniko
似乎更安全,因为据我了解,禁用默认值seccomp
和apparmor
配置文件会产生更大的影响。
提前致谢。