我想在 kubernetes pod 中使用 cmd docker compose up 启动 docker compose
这是我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-system
labels:
app: test
name: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
# init-container
initContainers:
- name: init-docker-compose
image: k8s-testsystem-init:origin-main-stable
imagePullPolicy: Always
securityContext:
runAsUser: 0
runAsGroup: 0
command: ["/bin/sh", "-c"]
args: ["cp -R /opt/docker /data && chmod -R 777 /data/docker && cat /tmp/.env >> /data/docker/.env"]
volumeMounts:
- name: compose-files
mountPath: /data
- name: docker-config
mountPath: /tmp
containers:
# docker
- name: docker-test
image: docker:latest
command: ["/bin/sh", "-c"]
args: ["cd /data/docker && docker commpose up"]
securityContext:
privileged: true
ports:
- containerPort: 80
- containerPort: 443
- containerPort: 5005
- containerPort: 502
volumeMounts:
- name: compose-files
mountPath: /data
# volumes
volumes:
# modbus profiles volumes
- name: compose-files
emptyDir: {}
- name: docker-config
configMap:
name: docker-configmap
items:
- key: env
path: .env
如果我创建此资源,pod 会退出:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
如果我删除 cmd 并通过 shell 启动它,一切都会正常工作。
我该如何解决这个问题?
您应该寻找关键字“DinD”和“DooD” 但我不推荐这两种方式。 你应该为每个 docker 组件创建几个单独的 pod