Cron 作业运行的映像使用 docker:dind 作为基础映像,当我尝试在本地运行该映像时,我发现在使用 docker run 命令时必须添加“--privileged”才能连接到主机码头引擎。
所以我的问题是,有没有办法在配置 Cron 作业时也以特权模式运行容器?因为如果我不这样做,就会有一个
docker: error during connect: Post "http://docker:2375/v1.24/containers/create": dial tcp: lookup docker on 10.254.133.10:53: no such host
发生错误,我猜可能与不使用特权模式有关。提前谢谢您!
使其运行的最简单方法是使用
privileged: true
使容器在特权模式下运行,并使用
hostNetwork: true
与主机共享同一网络。示例 yaml 如下所示:
apiVersion: v1
kind: Pod
metadata:
name: dind
spec:
hostNetwork: true
containers:
- name: dind
image: docker:dind
securityContext:
privileged: true
请注意,之后您可能需要登录 docker(这可能超出了这个问题的范围,但让我提供一些指导):
kubectl exec -it dind -- sh
到 ssh,然后运行
docker login
。尽管此更改只会在 pod 内容器的生命周期内有效(例如,如果容器重新启动,它将丢失)。您可以使用这种方式只是为了尝试,为了更持久的方式请检查下一点。
command: ["docker", "login", "--username", "$USERNAME", "--password", "$PASSWORD"]
添加到 yaml 文件并使用secrets 传递环境变量。