சிஐ/சிடி சூழல்களில் டோக்கர் கண்டெய்னர்களில் இருந்து ஹோஸ்டுக்கு கட்டிட கலைப்பொருட்களை மாற்றுதல்

சிஐ/சிடி சூழல்களில் டோக்கர் கண்டெய்னர்களில் இருந்து ஹோஸ்டுக்கு கட்டிட கலைப்பொருட்களை மாற்றுதல்
சிஐ/சிடி சூழல்களில் டோக்கர் கண்டெய்னர்களில் இருந்து ஹோஸ்டுக்கு கட்டிட கலைப்பொருட்களை மாற்றுதல்

CI/CD இல் சார்பு மேலாண்மைக்கு டோக்கரைப் பயன்படுத்துதல்

குறிப்பாக தொடர்ச்சியான ஒருங்கிணைப்பு (CI) அமைப்புகளில் சார்புகளைக் கையாளவும் சூழல்களை உருவாக்கவும் டோக்கர் ஒரு திறமையான வழியை வழங்குகிறது. டோக்கர் கொள்கலன்களைப் பயன்படுத்துவதன் மூலம், உங்கள் சிஐ முகவர்களில் பல்வேறு இயக்க நேரங்கள் மற்றும் லைப்ரரிகளை நிறுவுவதில் உள்ள தொந்தரவைத் தவிர்க்கலாம், நிலையான மற்றும் தனிமைப்படுத்தப்பட்ட உருவாக்க செயல்முறையை உறுதிசெய்யலாம்.

அத்தகைய பணிப்பாய்வுகளில் ஒரு பொதுவான தேவை, கொள்கலனில் இருந்து மீண்டும் ஹோஸ்ட் இயந்திரத்திற்கு உருவாக்க கலைப்பொருட்களை மாற்றும் திறன் ஆகும். இதன் விளைவாக வரும் கோப்புகள் தேவைக்கேற்ப பயன்படுத்தப்படலாம் அல்லது பயன்படுத்தப்படலாம் என்பதை இது உறுதி செய்கிறது. ஆனால் உங்கள் CI பைப்லைனுக்குள் இதை எவ்வாறு திறமையாக அடைய முடியும்? விருப்பங்களை ஆராய்வோம்.

கட்டளை விளக்கம்
docker cp ஒரு கொள்கலன் மற்றும் உள்ளூர் கோப்பு முறைமைக்கு இடையில் கோப்புகள்/கோப்புறைகளை நகலெடுக்கிறது
docker volume rm குறிப்பிட்ட டோக்கர் தொகுதியை நீக்குகிறது
client.images.build பைத்தானுக்கான டோக்கர் SDK ஐப் பயன்படுத்தி குறிப்பிட்ட பாதையில் இருந்து டோக்கர் படத்தை உருவாக்குகிறது
client.containers.run Python க்கான Docker SDK ஐப் பயன்படுத்தி ஒரு படத்திலிருந்து ஒரு Docker கண்டெய்னரை உருவாக்கி, தொடங்கும்
container.stop() பைத்தானுக்கான டோக்கர் SDK ஐப் பயன்படுத்தி இயங்கும் கொள்கலனை நிறுத்துகிறது
container.remove() பைத்தானுக்கான டோக்கர் SDK ஐப் பயன்படுத்தி கொள்கலனை நீக்குகிறது
client.volumes.get பைத்தானுக்கான டோக்கர் SDK ஐப் பயன்படுத்தி பெயரின்படி டோக்கர் தொகுதியை மீட்டெடுக்கிறது

டோக்கர் கலைப்பொருள் பரிமாற்ற ஸ்கிரிப்ட்களின் விரிவான விளக்கம்

வழங்கப்பட்ட ஸ்கிரிப்ட்களில், டோக்கர் படத்தைப் பயன்படுத்தி உருவாக்குவதன் மூலம் செயல்முறை தொடங்குகிறது docker build -t my-build-image . கட்டளை. இந்தக் கட்டளை தற்போதைய கோப்பகத்தில் உள்ள ஒரு Dockerfile இலிருந்து ஒரு Docker படத்தைத் தொகுத்து, அதைக் குறியிடுகிறது. my-build-image. படம் கட்டப்பட்டதும், அடுத்த கட்டத்தில் இந்தப் படத்திலிருந்து ஒரு கொள்கலனை இயக்குவது அடங்கும் docker run --name my-build-container -v build_volume:/build my-build-image. இந்த கட்டளை ஒரு புதிய கொள்கலனைத் தொடங்குகிறது my-build-container பெயரிடப்பட்ட டோக்கர் தொகுதியை ஏற்றுகிறது build_volume வேண்டும் /build கொள்கலனுக்குள் அடைவு. கன்டெய்னரின் ஓட்டத்தின் போது உருவாக்கப்பட்ட தரவை தொடர்ந்து நிலைநிறுத்துவதற்கு தொகுதி உதவுகிறது.

பில்ட் ஆர்டிஃபாக்ட்களை கொள்கலனில் இருந்து ஹோஸ்டுக்கு நகலெடுக்க, கட்டளை docker cp my-build-container:/path/to/build/artifacts/. /path/on/host உபயோகப்பட்டது. இந்தக் கட்டளையானது கொள்கலனுக்குள் இருக்கும் மூல கோப்பகத்தையும் ஹோஸ்ட் கணினியில் உள்ள இலக்கு கோப்பகத்தையும் குறிப்பிடுகிறது. நகலெடுத்தல் முடிந்ததும், கன்டெய்னரை நிறுத்தவும் அகற்றவும் சுத்தம் செய்யும் செயல்பாடுகள் செய்யப்படுகின்றன docker stop my-build-container மற்றும் docker rm my-build-container முறையே. தொகுதி இனி தேவையில்லை என்றால், அதை அகற்றலாம் docker volume rm build_volume.

CI/CD பைப்லைன் எடுத்துக்காட்டில், YAML உள்ளமைவு இந்த படிகளை தானியங்குபடுத்துகிறது. தி docker build, docker run, மற்றும் docker cp கட்டளைகள் பைப்லைன் கட்டும் கட்டத்தின் ஒரு பகுதியாக இயங்குவதற்கு ஸ்கிரிப்ட் செய்யப்படுகின்றன, கட்டுமான சூழல் தொடர்ந்து மீண்டும் உருவாக்கப்படுவதை உறுதி செய்கிறது. இதேபோல், பைதான் ஸ்கிரிப்ட் டோக்கர் செயல்பாடுகளை நிரல்ரீதியாக நிர்வகிக்க பைத்தானுக்கு டோக்கர் SDK ஐப் பயன்படுத்துவதை நிரூபிக்கிறது. இது ஒரு டோக்கர் கிளையண்டை துவக்குகிறது client = docker.from_env(), பயன்படுத்தி படத்தை உருவாக்குகிறது client.images.build, மற்றும் உடன் கொள்கலனை இயக்குகிறது client.containers.run. ஸ்கிரிப்ட் பயன்படுத்தி கலைப்பொருட்களை நகலெடுக்கிறது os.system(f"docker cp {container.id}:/path/to/build/artifacts/. /path/on/host"), மற்றும் இறுதியாக, அது நிறுத்துகிறது மற்றும் பயன்படுத்தி கொள்கலன் மற்றும் தொகுதி நீக்குகிறது container.stop(), container.remove(), மற்றும் client.volumes.get('build_volume').remove(). இந்த அணுகுமுறை முழு தானியங்கி, திறமையான கலைப்பொருள் பரிமாற்ற செயல்முறையை உறுதி செய்கிறது.

Docker Container இலிருந்து Host க்கு Build Artifacts நகலெடுக்கிறது

கோப்புகளை நகலெடுப்பதற்கான ஷெல் ஸ்கிரிப்ட்

# Step 1: Build the Docker image
docker build -t my-build-image .

# Step 2: Run the Docker container and create a named volume
docker run --name my-build-container -v build_volume:/build my-build-image

# Step 3: Copy the build artifacts to the volume
docker cp my-build-container:/path/to/build/artifacts/. /path/on/host

# Step 4: Cleanup - stop and remove the container
docker stop my-build-container
docker rm my-build-container

# Step 5: Optionally remove the volume if it's no longer needed
docker volume rm build_volume

CI பைப்லைனில் ஆர்ட்டிஃபாக்ட் டிரான்ஸ்ஃபர் தானியங்கு

CI/CD பைப்லைனுக்கான YAML கட்டமைப்பு

stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build -t my-build-image .
    - docker run --name my-build-container -v build_volume:/build my-build-image
    - docker cp my-build-container:/path/to/build/artifacts/. /path/on/host
    - docker stop my-build-container
    - docker rm my-build-container
    - docker volume rm build_volume

deploy:
  stage: deploy
  script:
    - echo "Deploying build artifacts..."
    - ./deploy.sh

டோக்கர் கலைப்பொருட்களை நகலெடுப்பதற்கான பைதான் ஸ்கிரிப்ட்

டோக்கர் SDK உடன் பைத்தானைப் பயன்படுத்துதல்

import docker
import os

# Initialize Docker client
client = docker.from_env()

# Build the Docker image
image = client.images.build(path=".", tag="my-build-image")[0]

# Run the Docker container
container = client.containers.run(image.id, name="my-build-container", detach=True)

# Copy the build artifacts to the host
os.system(f"docker cp {container.id}:/path/to/build/artifacts/. /path/on/host")

# Cleanup - stop and remove the container
container.stop()
container.remove()

# Optionally remove the volume if it's no longer needed
client.volumes.get('build_volume').remove()

CI/CD பணிப்பாய்வுகளுக்கான டோக்கரை மேம்படுத்துதல்

CI/CD சூழல்களில் டோக்கரைப் பயன்படுத்துவது சார்பு நிர்வாகத்தை எளிதாக்குவது மட்டுமல்லாமல், பைப்லைனின் வெவ்வேறு நிலைகளில் அளவிடுதல் மற்றும் நிலைத்தன்மையை மேம்படுத்துகிறது. ஜென்கின்ஸ், கிட்லேப் சிஐ மற்றும் சர்க்கிள்சிஐ போன்ற பல்வேறு சிஐ/சிடி கருவிகளுடன் டோக்கரின் ஒருங்கிணைப்பு பெரும்பாலும் கவனிக்கப்படாத அம்சமாகும். இந்த ஒருங்கிணைப்புகள் மிகவும் வலுவான ஆட்டோமேஷனை அனுமதிக்கின்றன மற்றும் கட்டுமானங்கள் மற்றும் வரிசைப்படுத்தல்களை நிர்வகிப்பதில் ஈடுபட்டுள்ள கையேடு மேல்நிலையை வெகுவாகக் குறைக்கலாம். டோக்கரின் திறன்களை மேம்படுத்துவதன் மூலம், குழுக்கள் தங்கள் பைப்லைனின் ஒவ்வொரு கட்டமும், குறியீடு தொகுத்தல் முதல் சோதனை மற்றும் வரிசைப்படுத்தல் வரை, கட்டுப்படுத்தப்பட்ட மற்றும் மறுஉருவாக்கம் செய்யக்கூடிய சூழலில் செயல்படுவதை உறுதிசெய்ய முடியும்.

கருத்தில் கொள்ள வேண்டிய மற்றொரு முக்கிய அம்சம் Dockerfiles இல் பல-நிலை உருவாக்கங்களைப் பயன்படுத்துவதாகும். பல-நிலை உருவாக்கங்கள் டெவலப்பர்கள் தங்கள் டோக்கர் படங்களை இயக்க நேர சூழலிலிருந்து உருவாக்க சூழலைப் பிரிப்பதன் மூலம் மேம்படுத்த அனுமதிக்கின்றன. இது சிறிய, திறமையான படங்களை எளிதாக நிர்வகிக்கவும் பயன்படுத்தவும் உதவுகிறது. கூடுதலாக, டோக்கர் தொகுதிகள் மற்றும் பைண்ட் மவுண்ட்களைப் பயன்படுத்துவது கோப்பு I/O செயல்பாடுகளின் செயல்திறனை கணிசமாக மேம்படுத்தலாம், இது பெரிய உருவாக்க கலைப்பொருட்கள் அல்லது தரவுத்தொகுப்புகளைக் கையாளும் போது மிகவும் பயனுள்ளதாக இருக்கும். இந்த உத்திகள் CI/CD செயல்முறையை நெறிப்படுத்துவது மட்டுமல்லாமல், மிகவும் பாதுகாப்பான மற்றும் பராமரிக்கக்கூடிய டோக்கர் படங்களுக்கும் பங்களிக்கின்றன.

Docker மற்றும் CI/CD பற்றிய பொதுவான கேள்விகள் மற்றும் பதில்கள்

  1. டோக்கர் கன்டெய்னர்களில் தரவை எவ்வாறு தொடர்வது?
  2. நீங்கள் பயன்படுத்தலாம் Docker volumes அல்லது bind mounts ஒரு கொள்கலனின் வாழ்க்கைச் சுழற்சிக்கு அப்பால் தரவைத் தொடர.
  3. பல கட்ட கட்டிடங்களைப் பயன்படுத்துவதன் நன்மை என்ன?
  4. பில்ட் மற்றும் ரன்டைம் சூழல்களைப் பிரிப்பதன் மூலம் சிறிய மற்றும் திறமையான டோக்கர் படங்களை உருவாக்க பல-நிலை உருவாக்கங்கள் உதவுகின்றன.
  5. ஜென்கின்ஸ் உடன் டோக்கரை எவ்வாறு ஒருங்கிணைப்பது?
  6. நீங்கள் ஜென்கின்ஸ் உடன் Docker ஐப் பயன்படுத்தி ஒருங்கிணைக்கலாம் Docker Pipeline செருகுநிரல், இது உருவாக்க செயல்முறையின் போது டோக்கர் படங்கள் மற்றும் கொள்கலன்களுடன் ஜென்கின்ஸ் தொடர்பு கொள்ள அனுமதிக்கிறது.
  7. டோக்கர் பைண்ட் மவுண்ட்கள் என்றால் என்ன?
  8. பைண்ட் மவுண்ட்கள், ஹோஸ்ட் கோப்பு முறைமையிலிருந்து ஒரு கோப்பு அல்லது கோப்பகத்தை டோக்கர் கண்டெய்னரில் ஏற்ற அனுமதிக்கிறது, இது ஹோஸ்டுக்கும் கண்டெய்னருக்கும் இடையே எளிதான கோப்பு பகிர்வை எளிதாக்குகிறது.
  9. சிஐ/சிடியில் டோக்கர் கொள்கலன் சுத்தம் செய்வதை எவ்வாறு தானியங்குபடுத்துவது?
  10. போன்ற கட்டளைகளைப் பயன்படுத்தி டோக்கர் கொள்கலன் சுத்தம் செய்வதைத் தானியங்குபடுத்துங்கள் docker stop, docker rm, மற்றும் docker volume rm உங்கள் CI/CD ஸ்கிரிப்ட்களின் முடிவில்.
  11. டோக்கர் தொகுதி என்றால் என்ன?
  12. டோக்கர் வால்யூம் என்பது டோக்கர் கன்டெய்னர்களால் உருவாக்கப்பட்ட மற்றும் பயன்படுத்தப்படும் தரவை தொடர்ந்து நிலைநிறுத்துவதற்கான ஒரு பொறிமுறையாகும்.
  13. CI/CD பைப்லைனில் பல டோக்கர் கொள்கலன்களை இயக்க முடியுமா?
  14. ஆம், வெவ்வேறு சேவைகள் மற்றும் சார்புகளை தனித்தனியாக நிர்வகிக்க, CI/CD பைப்லைனில் பல டோக்கர் கொள்கலன்களை இயக்கலாம்.
  15. டோக்கர் கொள்கலனில் இருந்து ஹோஸ்டுக்கு கோப்புகளை நகலெடுப்பது எப்படி?
  16. பயன்படுத்த docker cp ஒரு கொள்கலனில் இருந்து ஹோஸ்ட் கோப்பு முறைமைக்கு கோப்புகளை நகலெடுக்க கட்டளை.
  17. சிஐ/சிடி பைப்லைன்களில் நான் ஏன் டோக்கரைப் பயன்படுத்த வேண்டும்?
  18. CI/CD பைப்லைன்களில் டோக்கரைப் பயன்படுத்துவது ஒரு சீரான மற்றும் மறுஉருவாக்கம் செய்யக்கூடிய சூழலை உறுதி செய்கிறது, சார்பு நிர்வாகத்தை எளிதாக்குகிறது மற்றும் அளவிடுதல் திறனை மேம்படுத்துகிறது.
  19. சிஐ/சிடியில் டோக்கர் ஒருங்கிணைப்பை ஆதரிக்கும் கருவிகள் என்ன?
  20. Jenkins, GitLab CI மற்றும் CircleCI போன்ற கருவிகள் டோக்கர் ஒருங்கிணைப்பை ஆதரிக்கின்றன, உருவாக்க மற்றும் வரிசைப்படுத்தல் செயல்முறைகளின் தடையற்ற தன்னியக்கத்தை அனுமதிக்கிறது.

முடிப்பது:

CI/CD பைப்லைன்களில் டோக்கரை இணைப்பது சார்பு நிர்வாகத்தை எளிதாக்குகிறது மற்றும் நிலையான உருவாக்க சூழலை உறுதி செய்கிறது. டோக்கர் கட்டளைகள் மற்றும் ஸ்கிரிப்ட்களைப் பயன்படுத்துவதன் மூலம், கொள்கலன்களில் இருந்து ஹோஸ்ட் சிஸ்டத்திற்கு உருவாக்க கலைப்பொருட்களை திறமையாக மாற்றலாம். இந்த முறை உருவாக்க செயல்முறையை மேம்படுத்துவது மட்டுமல்லாமல், உங்கள் CI/CD பணிப்பாய்வுகளின் அளவிடுதல் மற்றும் பராமரிப்பை மேம்படுத்துகிறது. இந்த பணிகளை தானியக்கமாக்குவது செயல்பாடுகளை மேலும் நெறிப்படுத்துகிறது, இது நவீன மென்பொருள் மேம்பாட்டிற்கான விலைமதிப்பற்ற அணுகுமுறையாக அமைகிறது.