我正在使用docker dind镜像并创建一个pod。当我尝试在pod中运行docker build时,我得到一个错误。
apiVersion: v1
kind: Pod
metadata:
name: dockercontainer
namespace: default
spec:
containers:
- image: docker:24.0.0-rc.1-dind
name: dockercontainer
securityContext:
runAsUser: 0
pod正在创建中,但是当我在pod中执行docker构建时,我得到以下错误:ERROR: Cannot connect to the docker daemon at unix://var/run/docker.sock
3条答案
按热度按时间js81xvg61#
注意:这里假设您在K8s中使用的是docker运行时!如果没有,则使用kaniko。
docker守护进程没有挂载到pod中-这就是你的错误的原因。为了构建映像,您将需要以下各项之一:
privileged
模式下运行pod中的容器在K8s pod中构建/运行容器存在一些问题,从安全Angular 来看(关于here和here的更多信息)。更安全的方法是使用sysbox,但这可能比我们在这里想要的更详细。
我假设你不可能在K8之外构建这个图像。
agxfikkp2#
我用你使用的图像创建了豆荚,没有遇到任何问题。请参见以下序列:
docker-pod.yaml
kubectl create -f /tmp/docker-pod.yml
sh
:kubectl exec -it docker sh
docker version
显示docker守护进程正在其内部运行:因为它是默认的用户容器,运行时使用:
privileged
模式下运行docker in docker
容器。dddzy1tm3#
你能检查一下操作系统发行版吗?请运行此命令
cat /etc/os-release
。至于错误消息,看起来docker守护进程没有运行。你能运行这个命令sudo dockerd &
吗?您可以阅读更多关于dockerd here的内容。对于ArchLinux,我在这里发布了类似的答案。