1

我正在尝试在没有特权构建器的情况下构建 Docker 映像,因此DinD不是一种选择。我现在发现了两种使用kanikoimg实现这一目标的方法。

它们都在我的本地 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需要seccompapparmor设置,而kaniko容器在内部运行构建器进程root user,但不需要seccompapparmor更改。
我现在想知道哪个被认为更安全,运行一个容器,其中的进程由 root 用户运行,或者运行一个普通用户但使用seccomp=unconfinedand运行的容器apparmor=unconfined

如果有人可以帮助我并给我一些线索,那就太好了。
我的直觉告诉我kaniko似乎更安全,因为据我了解,禁用默认值seccompapparmor配置文件会产生更大的影响。

提前致谢。

4

0 回答 0