在 kuberntes pod 中启动 docker-compose

问题描述 投票:0回答:1

我想在 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 启动它,一切都会正常工作。

我该如何解决这个问题?

kubernetes docker-compose
1个回答
0
投票

您应该寻找关键字“DinD”和“DooD” 但我不推荐这两种方式。 你应该为每个 docker 组件创建几个单独的 pod

© www.soinside.com 2019 - 2024. All rights reserved.