CircleCI पर प्रायोगिक डॉकर सुविधाओं को कैसे चलाया जाए


12

सर्कलसीआई पर जब कोई निर्माण शुरू किया जाता है, तो यह पहली चीजों में से एक है:

एक दूरस्थ डॉकर इंजन सेट करें

Specified reusable docker engine, but build has not been whitelisted.
Contact CircleCI to be whitelisted
Allocating a remote Docker Engine
...
Remote Docker engine created. Using VM 'prealloc-wrjtu1qd-1491949826270'
Created container accessible with:
  DOCKER_TLS_VERIFY=1
  DOCKER_HOST=tcp://<IP>:2376
  DOCKER_CERT_PATH=/tmp/docker-certs615987123
  DOCKER_MACHINE_NAME=51123

इसके बाद जब docker build --squash -t imagename .सर्कलसीआई पर चलाया जाता है, तो इसमें परिणाम होता है:

Error response from daemon: squash is only supported with experimental mode
Exited with code 1

विचार-विमर्श

यह /etc/docker/daemon.jsonनिम्नानुसार बदलने के बाद स्थानीय रूप से प्रयोगात्मक सुविधाओं का उपयोग करने के लिए काम करता है:

{
    "experimental": true
}

और docker systemctl सेवा को फिर से शुरू करना, लेकिन CircleCI पर ऐसा कैसे करें? यह असंभव लगता है क्योंकि निर्माण आउटपुट इंगित करता है कि एक कनेक्शन दूरस्थ डॉकटर से बना है जो सर्किलसी सिस्टम पर रहता है।

जवाबों:


5

आप प्रबंधित सेवाओं की सीमाओं में चल रहे हैं। कई प्रबंधित सेवाएं विचारों के साथ प्रयोग करना शुरू करने के लिए महान हैं और आकस्मिक उपयोगकर्ता के लिए एक महान मूल्य दिखा सकती हैं। लेकिन वे लचीलेपन और कार्यक्षमता के लिए उपयोग में आसानी करते हैं, इसलिए जैसे ही हम गंभीर जरूरतों के लिए शुरू करते हैं और इन विचारों पर निर्माण की एक महत्वपूर्ण राशि खर्च करने के लिए तैयार हैं, पहला कदम जो हमें करना चाहिए वह यह है कि एक लचीले विकल्प का चयन करें पूरी तरह कार्यात्मक समाधान। मेरे फैसले में, आप उस रेखा को मार रहे हैं, जहां आपको कुछ और देखने की जरूरत है - और आप देखेंगे कि आपको एक अलग टूल सीखने की जरूरत है, क्योंकि यह मुफ्त सॉफ्टवेयर नहीं है और आप इसे स्वयं नहीं चला सकते।

यहां हम सर्कल सीआई के बारे में बोल रहे हैं, लेकिन निम्नलिखित सीमाएं कई प्रबंधित सेवाओं के लिए आम हैं:

  • प्रबंधित सेवाओं ने सॉफ़्टवेयर संस्करणों पर एक कठिन कंट्राईंट डाल दिया, जो हमें उपयोग करने की अनुमति देते हैं। ये अड़चनें आज की जरूरत से मेल खा सकती हैं, लेकिन बाद के समय की जरूरत नहीं है। वे पहले ही आज सिंक से बाहर हो सकते हैं। किसी भी मामले में यह अक्सर शो स्टॉपर होता है, क्योंकि विकास के वातावरण और प्रबंधित वातावरण में समान सॉफ़्टवेयर संस्करणों का उपयोग करने में असमर्थ होने के कारण सभी प्रकार के बग और कठिनाइयों का एक बेकार स्रोत है।

  • प्रबंधित सेवाएँ उनकी कार्यक्षमता के लिए प्रतिबंधित पहुँच प्रदान करती हैं। यह वह समस्या है जिसका आप यहाँ सामना कर रहे हैं: आप डॉक को चलाना चाहते हैं, लेकिन आपके कार्यों के सबसेट तक केवल डेमॉन तक ही पहुँच नहीं है। इन सीमाओं को कभी-कभी अच्छी तरह से प्रलेखित नहीं किया जाता है और न ही विज्ञापन सामग्री द्वारा पूर्ण प्रकाश में लाया जाता है। इसका मतलब है कि इन सुविधाओं को समझने और एकीकृत करने के लिए खर्च किए गए काम तब तक बेकार हैं जब तक कि हम एक और बेहतर समाधान के लिए प्रबंधित सेवा नहीं छोड़ते हैं।

  • प्रबंधित सेवाएँ हमारे द्वारा संग्रहीत डेटा तक सीमित पहुँच प्रदान करती हैं। इसलिए, लॉगिंग और निगरानी के लिए प्रबंधित सेवाओं का उदाहरण लेने के लिए, डेटा का उपयोग धीमा, असुविधाजनक और विस्तृत है। यदि हम अपना इंफ्रास्ट्रक्चर चलाते हैं, तो हम अपनी निगरानी के आंकड़ों पर किसी भी फैंसी कस्टम विश्लेषण को चलाने के लिए स्वतंत्र हैं, क्योंकि डेटा तक पहुंच आसान है।

ध्यान दें कि यह प्रबंधित सेवाओं के खिलाफ मामला नहीं है। उनमें से एक हाथ लचीलापन और कार्यक्षमता के साथ उपयोग में आसानी को संयोजित करने में सक्षम है। लेकिन लचीलेपन और कार्यक्षमता के लिए इनमें से कई सेवा व्यापार में आसानी होती है: हम उन्हें एक सरल कार्यक्षमता का निर्माण करने के लिए एक समीक्षक के रूप में उपयोग कर सकते हैं लेकिन वे हमें उस बिंदु से आगे चलने से रोकेंगे। हमें इस व्यापार से अवगत होने और विचार करने की आवश्यकता है।


8

सर्कलसीआई अब आपको एक मशीन निष्पादक का उपयोग करने की अनुमति देता है जो उबंटू 14.04 और डॉकर संस्करण 17.06.0-सीई के साथ आपके लिए एक अलग वीएम का प्रावधान करता है। यह आपको डॉकर डेमॉन के लिए प्रायोगिक सुविधाओं को चालू करने की अनुमति देता है।

आपको machineकुंजी के बजाय कुंजी का उपयोग करने की आवश्यकता है docker, बस एक डॉकटर कंटेनर के बजाय एक अलग आभासी मशीन में अपनी नौकरी चलाने के लिए।

आप मशीन के लिए केवल 2 चित्र चुन सकते हैं:

  • circleci/classic:latest: डॉक़र 17.03.0-CE के साथ उबंटू 14.04, या
  • circleci/classic:edge: Ubuntu 14.04 डॉकर 17.06.0-CE के साथ - प्रयोगात्मक सुविधाओं के साथ एक।

आपको मशीन पर स्वयं निर्भरता स्थापित करने की आवश्यकता होगी, क्योंकि यह काफी नंगे है। उदाहरण के लिए, यदि आपको अपने परीक्षणों के लिए PHP की आवश्यकता है, तो आपको दौड़ने की आवश्यकता होगी sudo apt-get install -y php5

यहाँ एक नमूना है। Circleci / config.yml जो प्रयोगात्मक सुविधा का उपयोग करके एक डॉक छवि बनाता है docker build --squash:

.circleci / config.yml

version: 2
jobs:
  build:
    # Run in a separate virtual machine instead of a Docker container.
    machine:
      enabled: true
      # Use Ubuntu 14.04 with bleeding edge Docker daemon 17.06.0-ce.
      image: circleci/classic:edge
    steps:
      - checkout
      - run:
          command: |
            # Restart Docker with experimental features on.
            sudo sh -c 'echo '\''DOCKER_OPTS="--experimental=true"'\'' >> /etc/default/docker'
            sudo service docker restart

            # Install dependencies for tests etc.
            sudo apt-get update
            sudo apt-get install -y php5

            # Build image with experimental feature --squash.
            docker build --squash -t myuser/myimage .

            # Login and push Docker image to registry.
            docker login -u $DOCKER_USER -p $DOCKER_PASS
            docker push myuser/myimage

1
यह स्वीकृत उत्तर होना चाहिए। सर्कल सीआई में बहुत अच्छी तरह से काम करता है। बस मेरा 1GB स्लिम इमेज 180MB तक डाउन हो गया।
पिस्ता 329
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.