2015-11-24 6 views
15

इस आधिकारिक दस्तावेज में, यह एक YAML कॉन्फ़िग फ़ाइल में आदेश चला सकते हैं:कुबर्नेट्स के साथ एक यामल फ़ाइल में एकाधिक कमांड कैसे सेट करें?

http://kubernetes.io/v1.1/docs/user-guide/configuring-containers.html

apiVersion: v1 
kind: Pod 
metadata: 
    name: hello-world 
spec: # specification of the pod’s contents 
    restartPolicy: Never 
    containers: 
    - name: hello 
    image: "ubuntu:14.04" 
    env: 
    - name: MESSAGE 
     value: "hello world" 
    command: ["/bin/sh","-c"] 
    args: ["/bin/echo \"${MESSAGE}\""] 

मैं एक से अधिक आदेश को चलाने के लिए चाहते हैं, कैसे करना है?

उत्तर

42
command: ["/bin/sh","-c"] 
args: ["command one; command two && command three"] 

स्पष्टीकरण:command ["/bin/sh", "-c"] कहते हैं, "एक खोल चलाने के लिए, और निम्नलिखित निर्देशों पर अमल"। तर्क तब खोल के लिए आदेश के रूप में पारित कर रहे हैं। शेल स्क्रिप्टिंग में अर्धविराम कमांड को अलग करता है, और && सशर्त रूप से निम्न आदेश चलाता है यदि पहले सफल होता है। उपर्युक्त उदाहरण में, यह command one के बाद command two चलाता है, और command two सफल होने पर केवल command three चलाता है।

वैकल्पिक: कई मामलों में, आप जिन आदेशों को चलाने के लिए चाहते हैं, वे शायद अंतिम आदेश को चलाने के लिए सेट कर रहे हैं। इस मामले में, अपना खुद का Dockerfile बनाना जाने का तरीका है। विशेष रूप से RUN निर्देश देखें।

+1

हां, बहुत मान्य है, हालांकि, मुझे लगता है कि 'कमांड' बढ़ाने के लिए भी अच्छे उपयोग के मामले हैं क्योंकि यह डॉकरफाइल के 'एंट्रीपॉइंट' को ओवरराइड करता है;) –

0
कर सकते हैं एक स्क्रिप्ट के रूप में

आप एक खंड और एक ConfigMap उपयोग करने के लिए तैयार हैं, तो आप mount ConfigMap data, और फिर उस स्क्रिप्ट चलाने:

--- 
apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: my-configmap 
data: 
    entrypoint.sh: |- 
    #!/bin/bash 
    echo "Do this" 

    echo "Do that" 
--- 
apiVersion: v1 
kind: Pod 
metadata: 
    name: my-pod 
spec: 
    containers: 
    - name: my-container 
    image: "ubuntu:14.04" 
    command: 
    - /bin/entrypoint.sh 
    volumeMounts: 
    - name: configmap-volume 
     mountPath: /bin/entrypoint.sh 
     readOnly: true 
     subPath: entrypoint.sh 
    volumes: 
    - name: configmap-volume 
    configMap: 
     defaultMode: 0700 
     name: my-configmap 

यह एक छोटे से अपने फली कल्पना को साफ और अधिक जटिल के लिए अनुमति देता है पटकथा।

$ kubectl logs my-pod 
Do this 
Do that 
संबंधित मुद्दे