วิธีเรียกใช้คุณลักษณะนักเทียบเคียงรุ่นทดลองบน CircleCI


12

เมื่อเริ่มสร้างบน CircleCI สิ่งแรกที่ทำคือ:

ติดตั้งเอ็นจิ้น Docker ระยะไกล

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 .ถูกเรียกใช้บน CircleCI ผลลัพธ์จะเป็น:

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

อภิปรายผล

มันใช้งานได้กับคุณลักษณะทดลองในเครื่องหลังจากเปลี่ยน/etc/docker/daemon.jsonดังนี้:

{
    "experimental": true
}

และรีสตาร์ทเซอร์วิส docker systemctl แต่ทำอย่างไรกับ CircleCI ดูเหมือนว่าเป็นไปไม่ได้เนื่องจากเอาต์พุตของบิลด์บ่งชี้ว่ามีการเชื่อมต่อกับตัวเทียบระยะไกลที่อยู่ในระบบ CircleCI

คำตอบ:


5

คุณกำลังใช้งานข้อ จำกัด ของบริการที่มีการจัดการ บริการที่มีการจัดการจำนวนมากนั้นยอดเยี่ยมในการเริ่มต้นทดลองกับแนวคิดและสามารถแสดงคุณค่าที่ยอดเยี่ยมสำหรับผู้ใช้ทั่วไป แต่พวกเขาแลกเปลี่ยนการใช้งานง่ายเพื่อความยืดหยุ่นและฟังก์ชั่นดังนั้นทันทีที่เราเริ่มมีความต้องการอย่างจริงจังและพร้อมที่จะใช้ความพยายามอย่างมากในการสร้างแนวคิดเหล่านี้สิ่งแรกที่เราควรทำคือเลือกยืดหยุ่น โซลูชั่นการทำงานอย่างเต็มที่ ในการตัดสินของฉันคุณกำลังกดปุ่มที่คุณต้องการค้นหาอย่างอื่นและคุณจะสังเกตเห็นว่าคุณต้องเรียนรู้เครื่องมืออื่นเพราะนั่นไม่ใช่ซอฟต์แวร์ฟรีและคุณไม่สามารถรันด้วยตัวเองได้

ที่นี่เรากำลังพูดถึง Circle CI แต่ข้อ จำกัด ดังต่อไปนี้เป็นเรื่องธรรมดาสำหรับบริการที่มีการจัดการจำนวนมาก:

  • บริการที่มีการจัดการทำให้เกิดข้อขัดแย้งอย่างหนักเกี่ยวกับเวอร์ชันของซอฟต์แวร์ที่อนุญาตให้เราใช้ ข้อ จำกัด เหล่านี้อาจตรงกับสิ่งที่เราต้องการในวันนี้ แต่ไม่จำเป็นในภายหลัง พวกเขาอาจจะซิงค์วันนี้แล้ว ไม่ว่าในกรณีใดก็ตามมักจะเป็นการหยุดการแสดงเพราะไม่สามารถใช้ซอฟต์แวร์รุ่นเดียวกันในสภาพแวดล้อมการพัฒนาและในสภาพแวดล้อมที่มีการจัดการเป็นแหล่งที่มาของข้อบกพร่องและความยากลำบากในการจัดเรียงทั้งหมด

  • บริการที่มีการจัดการให้การเข้าถึงฟังก์ชันการทำงานที่ จำกัด นี่เป็นปัญหาที่คุณเผชิญอยู่ที่นี่: คุณต้องการเรียกใช้นักเทียบท่า แต่คุณไม่สามารถเข้าถึง daemon ได้เฉพาะกับเซ็ตย่อยของฟังก์ชั่นเท่านั้น ข้อ จำกัด เหล่านี้บางครั้งอาจไม่มีการจัดทำเป็นเอกสารหรือนำเสนออย่างเต็มรูปแบบโดยสื่อโฆษณา นี่หมายถึงงานที่ใช้ในการทำความเข้าใจและการรวมคุณสมบัติเหล่านี้ไม่มีค่าจนกว่าเราจะออกจากบริการที่มีการจัดการเพื่อหาทางออกที่ดีกว่า

  • บริการที่ได้รับการจัดการจะให้การเข้าถึงข้อมูลที่เราจัดเก็บไว้อย่าง จำกัด ดังนั้นในตัวอย่างของบริการที่ได้รับการจัดการสำหรับการบันทึกและตรวจสอบการเข้าถึงข้อมูลช้าไม่สะดวกและกว้างขวาง หากเราใช้งานโครงสร้างพื้นฐานของเราเรามีอิสระที่จะทำการวิเคราะห์แบบกำหนดเองใด ๆ ในสิ่งประดิษฐ์การตรวจสอบของเราเพราะข้อมูลเข้าถึงได้ง่ายกว่า

โปรดทราบว่านี่ไม่ใช่กรณีบริการที่มีการจัดการ มือของพวกเขาสามารถรวมการใช้งานง่ายเข้ากับความยืดหยุ่นและฟังก์ชั่น แต่การค้าบริการเหล่านี้ใช้งานง่ายเพื่อความยืดหยุ่นและฟังก์ชั่นการใช้งาน: เราสามารถใช้พวกเขาเป็นวิธีที่รวดเร็วในการสร้างฟังก์ชั่นที่เรียบง่าย แต่พวกเขาจะป้องกันไม่ให้เราก้าวข้ามจุดนั้นไป เราจำเป็นต้องตระหนักถึงการแลกเปลี่ยนนี้และพิจารณา


8

CircleCI อนุญาตให้คุณใช้ตัวเรียกใช้งานเครื่องซึ่งกำหนด VM แยกต่างหากสำหรับคุณโดยติดตั้ง Ubuntu 14.04 และ Docker เวอร์ชัน 17.06.0-ce สิ่งนี้ช่วยให้คุณสามารถเปิดฟีเจอร์การทดลองสำหรับ Docker daemon

คุณต้องใช้machineกุญแจแทนการใช้dockerกุญแจในการรันงานของคุณในเครื่องเสมือนแยกต่างหากแทนที่จะเป็นเพียงตู้คอนเทนเนอร์ Docker

คุณสามารถเลือกได้ 2 ภาพสำหรับเครื่อง:

  • circleci/classic:latest: Ubuntu 14.04 พร้อม Docker 17.03.0-ce หรือ
  • circleci/classic:edge: Ubuntu 14.04 พร้อม Docker 17.06.0-ce - ตัวที่มีคุณสมบัติทดลองใช้

คุณจะต้องติดตั้งการขึ้นต่อกันของเครื่องด้วยตัวเองเนื่องจากมันค่อนข้างจะเปลือยเปล่า ตัวอย่างเช่นถ้าคุณต้องการ PHP sudo apt-get install -y php5สำหรับการทดสอบของคุณคุณจะต้องทำงาน

นี่คือตัวอย่าง. circleci / config.ymlที่สร้างอิมเมจ Docker โดยใช้คุณสมบัติการทดลอง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
นี่ควรเป็นคำตอบที่ยอมรับได้ ทำงานได้ดีมากใน Circle CI เพิ่งได้รูปที่เพรียวบางเพียง 1GB ถึง 180MB
pista329
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.