Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत · पाठ

हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना

सिग्नल हैंडलिंग और कॉन्फ़िगरेशन टेम्पलेटिंग के साथ बहु-चरणीय बिल्ड स्क्रिप्ट और मज़बूत एंट्रीपॉइंट शिम लिखें।

पाठ 1, कुल 4 में से13 चरण

हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना, CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

DevOps के लिए हल्की डॉकरफ़ाइल क्यों महत्वपूर्ण हैं

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

  • बहु-चरणीय बिल्ड निर्माण-समय के औज़ारों को अंतिम रनटाइम इमेज से अलग करते हैं, जिससे आकार बहुत कम हो जाता है।
  • एंट्रीपॉइंट शिम छोटी शेल स्क्रिप्टें होती हैं जो कंटेनरों को आरंभ करती हैं: वे कॉन्फ़िगरेशन फ़ाइलों के लिए टेम्पलेट तैयार करती हैं, परिवेश चरों को मान्य करती हैं, सिग्नल संभालती हैं और अंत में मुख्य प्रक्रिया को नियंत्रण सौंपती हैं।
  • मिलकर ये कुबेरनेट्स, ECS और प्रत्यक्ष हार्डवेयर परिवेशों में विश्वसनीय, पोर्टेबल कंटेनर कार्यभार की रीढ़ बनती हैं।

इस पाठ में दोनों विधाओं को शुरू से अंत तक शामिल किया गया है, जिसमें उत्पादन-स्तरीय ऐसे प्रतिरूप हैं जिन्हें आप सीधे अपनी निर्माण-श्रृंखलाओं में अपना सकते हैं।

बहु-चरणीय डॉकरफ़ाइल की संरचना

बहु-चरणीय डॉकरफ़ाइल में कई FROM निर्देश होते हैं। प्रत्येक चरण परतों का एक पृथक समूह होता है; आप अगले चरण में केवल वही निर्माण-उत्पाद कॉपी करते हैं जिनकी आपको आवश्यकता होती है।

  • चरण 0 (निर्माता): संकलक, परीक्षण चलाने वाले और निर्माण-निर्भरता स्थापित करता है।
  • चरण 1 (रनटाइम): न्यूनतम आधार (जैसे alpine, distroless) से शुरू होता है और केवल संकलित बाइनरी या ऐप पैकेज कॉपी करता है।
  • अंतिम इमेज में gcc, make या स्रोत कोड कभी नहीं होता, जब तक कि आप उन्हें स्पष्ट रूप से कॉपी न करें।

चरण सीमाओं के पार फ़ाइलें लाने के लिए COPY में --from=<stage> का उपयोग करें। पठनीयता और docker build --target के साथ चुने हुए लक्ष्य के लिए चरणों को AS <name> से नाम दें।

# ---- Stage 0: builder ----
FROM golang:1.22-alpine AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /app/server ./cmd/server

# ---- Stage 1: runtime ----
FROM gcr.io/distroless/static-debian12
COPY --from=builder /app/server /server
ENTRYPOINT ["/server"]

परतों को न्यूनतम करना और कैश को अमान्य करना

प्रत्येक RUN, COPY और ADD निर्देश एक नई परत बनाता है। गलत क्रम में रखे गए निर्देश निर्माण कैश को अनावश्यक रूप से अमान्य कर देते हैं, जिससे सीआई निर्माण-श्रृंखलाएँ धीमी हो जाती हैं।

  • निर्भरता की सूची वाली फ़ाइलें (package.json, go.mod, requirements.txt) स्रोत कोड कॉपी करने से पहले कॉपी करें, ताकि निर्भरता स्थापना का कैश स्वतंत्र रूप से बना रहे।
  • संबंधित आदेशों को && से जोड़ें और पैकेज कैश को मध्यवर्ती परतों में छोड़ने से बचने के लिए उसी RUN परत में सफ़ाई करें।
  • पैकेज प्रबंधकों में --no-cache का उपयोग करें और स्थापना के बाद सूची वाली फ़ाइलें हटा दें।
FROM python:3.12-slim AS builder
WORKDIR /app

# 1. Install deps first (cached until requirements change)
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt

# 2. Copy source (cache busted only when code changes)
COPY src/ ./src/

FROM python:3.12-slim
COPY --from=builder /install /usr/local
COPY --from=builder /app/src /app/src
WORKDIR /app
CMD ["python", "-m", "src.main"]

BuildKit सीक्रेट और SSH अग्रेषण

निजी रजिस्ट्रियाँ, SSH कुंजियाँ और एपीआई टोकन इमेज की परतों में कभी नहीं आने चाहिए। डॉकर BuildKit दो सुरक्षित तरीके उपलब्ध कराता है:

  • --secret: एकल RUN चरण के भीतर एक सीक्रेट फ़ाइल माउंट करता है, बिना उसे परत में स्थायी रूप से शामिल किए। इसे /run/secrets/<id> के माध्यम से पाएँ।
  • --ssh: होस्ट के SSH एजेंट सॉकेट को निर्माण प्रक्रिया में अग्रेषित करता है, ताकि git clone निजी कुंजियों को शामिल किए बिना प्रमाणीकरण कर सके।

BuildKit को DOCKER_BUILDKIT=1 से या docker buildx build के माध्यम से सक्षम करें। # syntax=docker/dockerfile:1 निर्देश इन सुविधाओं को उपलब्ध कराता है।

# syntax=docker/dockerfile:1
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./

# Mount NPM token as a secret — never stored in the image
RUN --mount=type=secret,id=npm_token \
    NPM_TOKEN=$(cat /run/secrets/npm_token) \
    npm ci --prefer-offline

# Usage at build time:
# DOCKER_BUILDKIT=1 docker build \
#   --secret id=npm_token,src=~/.npmrc-token \
#   -t myapp:latest .

सुदृढ़ एंट्रीपॉइंट शिम लिखना

एंट्रीपॉइंट शिम एक शेल स्क्रिप्ट है जिसे डॉकरफ़ाइल में ENTRYPOINT के रूप में सेट किया जाता है। इसका काम मुख्य प्रक्रिया को नियंत्रण सौंपने से पहले रनटाइम परिवेश तैयार करना है।

एक सुव्यवस्थित शिम इस क्रम का पालन करता है:

  • चरण 1: set -euo pipefail सेट करें, ताकि कोई भी विफलता तुरंत प्रक्रिया रोक दे।
  • चरण 2: आवश्यक परिवेश चरों को मान्य करें और उपयोगी संदेश के साथ तुरंत विफल हों।
  • चरण 3: परिवेश चरों से कॉन्फ़िगरेशन फ़ाइलों के टेम्पलेट तैयार करें।
  • चरण 4: सहज बंदी के लिए सिग्नल हैंडलर पंजीकृत करें।
  • चरण 5: exec "$@" — शेल को मुख्य प्रक्रिया से बदल दें, ताकि PID 1 शिम के बजाय ऐप्लिकेशन हो।

अंतिम exec अत्यंत महत्वपूर्ण है: इसके बिना कुबेरनेट्स या डॉकर रनटाइम द्वारा भेजे गए सिग्नल बाल प्रक्रिया तक अग्रेषित नहीं किए जाते।

#!/usr/bin/env bash
set -euo pipefail

# Step 2: validate required env vars
REQUIRED_VARS=(DATABASE_URL APP_SECRET PORT)
for var in "${REQUIRED_VARS[@]}"; do
  if [[ -z "${!var:-}" ]]; then
    echo "[entrypoint] ERROR: required env var '$var' is not set" >&2
    exit 1
  fi
done

# Step 3: template config (see next scene)

# Step 4: signal handling (see scene after that)

# Step 5: hand off to CMD
exec "$@"

envsubst के साथ कॉन्फ़िगरेशन टेम्पलेट बनाना

envsubst (GNU gettext पैकेज से आने वाली उपयोगिता, जो अल्पाइन में gettext के रूप में उपलब्ध है) किसी टेम्पलेट फ़ाइल में मौजूद ${VAR} प्लेसहोल्डर को उनके वर्तमान परिवेश चर मानों से बदलती है।

  • इमेज में *.tmpl कॉन्फ़िगरेशन टेम्पलेट रखें; एंट्रीपॉइंट आरंभ होने पर उसका अंतिम रूप तैयार करता है।
  • envsubst को चरों की सूची स्पष्ट रूप से दें, ताकि वह अनजाने में असंबंधित डॉलर चिह्नों (जैसे एनजिनएक्स रेगेक्स में) का विस्तार न कर दे।
  • अंतिम रूप दी गई फ़ाइल को /tmp जैसे लिखने योग्य पथ या किसी समर्पित कॉन्फ़िगरेशन वॉल्यूम में लिखें।
#!/usr/bin/env bash
# Template: /etc/nginx/conf.d/app.conf.tmpl contains:
# server { listen ${NGINX_PORT}; server_name ${SERVER_NAME}; ... }

export NGINX_PORT=${NGINX_PORT:-8080}
export SERVER_NAME=${SERVER_NAME:-localhost}

envsubst '${NGINX_PORT} ${SERVER_NAME}' \
  < /etc/nginx/conf.d/app.conf.tmpl \
  > /etc/nginx/conf.d/app.conf

echo "[entrypoint] nginx config rendered:"
grep -E 'listen|server_name' /etc/nginx/conf.d/app.conf

exec "$@"

सिग्नल प्रबंधन और सहज बंदी

कुबेरनेट्स, ECS या docker stop द्वारा रोके जाने पर कंटेनरों को SIGTERM मिलता है। यदि आपका एंट्रीपॉइंट शिम PID 1 है और सिग्नल अग्रेषित नहीं करता, तो शांति अवधि के बाद मुख्य प्रक्रिया को SIGKILL से समाप्त कर दिया जाता है — इससे अनुरोध छूट सकते हैं या डेटा खराब हो सकता है।

  • शिम में trap का उपयोग करके SIGTERM और SIGINT पकड़ें।
  • kill -TERM "$child" का उपयोग करके सिग्नल बाल PID तक अग्रेषित करें।
  • बाल प्रक्रिया के बाहर निकलने तक रुकने के लिए wait "$child" का उपयोग करें, फिर उसका निकास कोड आगे भेजें।
  • वैकल्पिक रूप से, शेल को पूरी तरह बदलने के लिए exec का उपयोग करें — तब ऑपरेटिंग सिस्टम सिग्नल सीधे बाल प्रक्रिया तक पहुँचाता है और किसी trap की आवश्यकता नहीं होती। सरल मामलों के लिए यही पसंदीदा प्रतिरूप है।
#!/usr/bin/env bash
set -euo pipefail

# Start main process in background
"$@" &
child=$!

# Forward SIGTERM and SIGINT to the child
trap 'echo "[entrypoint] caught SIGTERM, forwarding..."; kill -TERM "$child"' TERM
trap 'echo "[entrypoint] caught SIGINT, forwarding...";  kill -INT  "$child"' INT

# Wait for child to exit and capture its exit code
wait "$child"
exit $?

न्यूनतम आरंभिक प्रक्रिया के रूप में tini का उपयोग

जब आपका कंटेनर बाल प्रक्रियाएँ शुरू करता है (जैसे, कोई शेल जो कार्यकर्ताओं की प्रतिलिपियाँ बनाता है), तो जॉम्बी प्रक्रियाओं को साफ़ करने के लिए आपको वास्तविक आरंभिक प्रक्रिया की आवश्यकता होती है। tini कंटेनरों के लिए विशेष रूप से बनाया गया एक बहुत छोटा आरंभिक बाइनरी है।

  • अपनी इमेज में tini जोड़ें और उसे एंट्रीपॉइंट आवरण के रूप में सेट करें।
  • यह जॉम्बी बाल प्रक्रियाओं को साफ़ करता है, सिग्नल सही ढंग से अग्रेषित करता है और बाल प्रक्रिया के स्थिति कोड के साथ बाहर निकलता है।
  • डॉकर में docker run --init से सक्रिय होने वाली अंतर्निहित tini उपलब्ध है, लेकिन इसे इमेज में शामिल करने से अलग-अलग रनटाइम (कुबेरनेट्स, ECS आदि) में व्यवहार एकसमान रहता है।
FROM node:20-alpine

# Install tini for proper signal handling and zombie reaping
RUN apk add --no-cache tini

WORKDIR /app
COPY --chown=node:node . .
RUN npm ci --omit=dev

USER node

# tini wraps CMD; forwards SIGTERM and reaps zombies
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "server.js"]

गैर-रूट उपयोगकर्ता के रूप में चलाना

root (UID 0) के रूप में चलने वाले कंटेनर एक बड़ा सुरक्षा जोखिम हैं: कंटेनर से बाहर निकलने पर होस्ट तक पूर्ण पहुँच मिल जाती है। मुख्य प्रक्रिया चलाने से पहले हमेशा किसी अप्रिविलेज्ड उपयोगकर्ता पर स्विच करें।

  • डॉकरफ़ाइल में addgroup / adduser (अल्पाइन) या groupadd / useradd (डेबियन) से एक समर्पित सिस्टम उपयोगकर्ता और समूह बनाएँ।
  • COPY --chown=appuser:appgroup से ऐप फ़ाइलों का स्वामित्व बदलें — यह अलग RUN chown परत बनाने से अधिक प्रभावी है।
  • USER निर्देश से उस उपयोगकर्ता पर स्विच करें। एंट्रीपॉइंट और CMD इसी उपयोगकर्ता के रूप में चलते हैं।
  • कुबेरनेट्स का securityContext.runAsNonRoot: true ऐसी इमेज शुरू करने से मना कर देगा जो अभी भी रूट के रूप में चलती है।
FROM python:3.12-slim

# Create non-root user
RUN groupadd --gid 1001 appgroup && \
    useradd --uid 1001 --gid appgroup --shell /bin/bash --create-home appuser

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy app files with correct ownership in a single layer
COPY --chown=appuser:appgroup src/ ./src/
COPY --chown=appuser:appgroup entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

USER appuser

ENTRYPOINT ["/entrypoint.sh"]
CMD ["python", "-m", "src.main"]

इमेज में स्वास्थ्य जाँच और तत्परता जाँच

कुबेरनेट्स की जीवंतता और तत्परता जाँचें घोषणापत्रों में परिभाषित की जाती हैं, लेकिन आप स्वतंत्र docker run और डॉकर कंपोज़ परिवेशों के लिए डॉकरफ़ाइल में HEALTHCHECK भी शामिल कर सकते हैं।

  • HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=3 CMD ...
  • एचटीटीपी सेवाओं के लिए curl --fail या wget -qO- का उपयोग करें; गैर-एचटीटीपी डेमॉन के लिए /dev/tcp/localhost/PORT से सॉकेट की जाँच करें।
  • केवल आवश्यक चीज़ें ही स्थापित करें: डिस्ट्रोलेस इमेजों में केवल स्वास्थ्य जाँच के लिए curl जोड़ने से बचें — इसके बजाय विशेष रूप से बनाया गया जाँच बाइनरी या ऐप्लिकेशन का अपना स्वास्थ्य बाइनरी उपयोग करें।
FROM nginx:1.27-alpine

COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/ /usr/share/nginx/html/

# Lightweight health check using bash TCP pseudo-device
# (no curl needed — works on any image with bash)
HEALTHCHECK --interval=15s --timeout=5s --start-period=10s --retries=3 \
  CMD bash -c 'exec 3<>/dev/tcp/localhost/80 && echo -e "GET /health HTTP/1.0\r\n" >&3 && cat <&3 | grep -q "200 OK"' || exit 1

EXPOSE 80

सब कुछ एक साथ: उत्पादन एंट्रीपॉइंट

नीचे एक पूर्ण, उत्पादन-स्तरीय एंट्रीपॉइंट शिम दिया गया है, जिसमें इस पाठ के सभी प्रतिरूप शामिल हैं: परिवेश सत्यापन, कॉन्फ़िगरेशन टेम्पलेट बनाना, सिग्नल अग्रेषण और नियंत्रण हस्तांतरण। यह प्रतिरूप कुबेरनेट्स पर तैनात वास्तविक Node.js, पाइथन और गो माइक्रोसर्विसों में उपयोग किया जाता है।

  • हर अनुभाग में टिप्पणी दी गई है, ताकि यह स्वयं-व्याख्यात्मक टेम्पलेट के रूप में काम करे।
  • शिम को 50 पंक्तियों से कम रखा गया है — एंट्रीपॉइंट सरल और जाँचे जा सकने योग्य होने चाहिए।
  • अंतिम exec "$@" पर ध्यान दें: सारी तैयारी पूरी होने के बाद शेल को ऐप्लिकेशन प्रक्रिया से बदल दिया जाता है, इसलिए वह PID 1 बन जाती है और सभी ऑपरेटिंग सिस्टम सिग्नल सीधे प्राप्त करती है।
#!/usr/bin/env bash
# entrypoint.sh — production-grade container entrypoint shim
set -euo pipefail

# ── 1. Validate required environment variables ──────────────────
REQUIRED=(DATABASE_URL APP_SECRET PORT LOG_LEVEL)
for var in "${REQUIRED[@]}"; do
  [[ -n "${!var:-}" ]] || { echo "[entrypoint] FATAL: $var is not set" >&2; exit 1; }
done

# ── 2. Set safe defaults for optional variables ─────────────────
export HOST=${HOST:-0.0.0.0}
export WORKERS=${WORKERS:-2}

# ── 3. Render config template ───────────────────────────────────
if [[ -f /etc/app/app.conf.tmpl ]]; then
  envsubst '${DATABASE_URL} ${PORT} ${LOG_LEVEL} ${HOST}' \
    < /etc/app/app.conf.tmpl \
    > /etc/app/app.conf
  echo "[entrypoint] config rendered at /etc/app/app.conf"
fi

# ── 4. Wait for dependent services (optional, fast) ─────────────
if [[ -n "${WAIT_FOR_HOST:-}" ]]; then
  echo "[entrypoint] waiting for ${WAIT_FOR_HOST}:${WAIT_FOR_PORT:-5432}..."
  until bash -c "exec 3<>/dev/tcp/${WAIT_FOR_HOST}/${WAIT_FOR_PORT:-5432}" 2>/dev/null; do
    sleep 1
  done
  echo "[entrypoint] dependency ready"
fi

# ── 5. Hand off to CMD (PID 1 becomes the application) ──────────
echo "[entrypoint] starting: $*"
exec "$@"

ज्ञान जाँच: एंट्रीपॉइंट में सिग्नल प्रबंधन

कंटेनर एंट्रीपॉइंट स्क्रिप्टों में सिग्नल प्रबंधन के बारे में अपनी समझ जाँचें।

पुनरावृत्ति: हल्की डॉकरफ़ाइलें और शेल एंट्रीपॉइंट

आपने उत्पादन कंटेनर लेखन के सभी स्तरों को शामिल किया है:

  • बहु-चरणीय बिल्ड कई FROM निर्देशों का उपयोग करके संकलकों और निर्माण औज़ारों को अंतिम इमेज से बाहर रखते हैं, जिससे हल्की, न्यूनतम रनटाइम परतें बनती हैं।
  • परतों का क्रम — स्रोत कोड से पहले निर्भरता की सूची वाली फ़ाइलें कॉपी करना — कैश हिट बढ़ाता है और सीआई निर्माण-श्रृंखलाओं को तेज़ करता है।
  • BuildKit सीक्रेट और SSH माउंट प्रमाणीकृत निर्माण को बाधित किए बिना क्रेडेंशियल को इमेज इतिहास से बाहर रखते हैं।
  • एंट्रीपॉइंट शिम परिवेश चरों को मान्य करते हैं, envsubst से कॉन्फ़िगरेशन फ़ाइलों के टेम्पलेट तैयार करते हैं और exec "$@" के माध्यम से ऐप्लिकेशन को नियंत्रण सौंपते हैं।
  • सिग्नल प्रबंधन के लिए या तो exec आवश्यक है (ताकि ऐप PID 1 हो), या पृष्ठभूमि कार्यों के उपयोग के समय स्पष्ट trap + kill + wait प्रतिरूप अपनाना पड़ता है।
  • टिनी कंटेनर द्वारा कई प्रक्रियाएँ शुरू किए जाने पर जॉम्बी प्रक्रियाओं की सफ़ाई और सही सिग्नल अग्रेषण उपलब्ध कराती है।
  • गैर-रूट उपयोगकर्ता और HEALTHCHECK निर्देश मिलकर एक सुरक्षित, निगरानी योग्य इमेज तैयार करते हैं, जो कुबेरनेट्स के उत्पादन कार्यभार के लिए तैयार होती है।

इन प्रतिरूपों को लगातार अपनाने पर आपकी इमेजें छोटी होंगी, तैनाती तेज़ होगी और उत्पादन परिस्थितियों में काफ़ी अधिक सुदृढ़ रहेंगी।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Bash सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
88

अक्सर पूछे जाने वाले प्रश्न

क्या “हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” पाठ निःशुल्क है?

हाँ—“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” में मैं क्या सीखूँगा?

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

क्या Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना
  2. envsubst और heredoc से कॉन्फ़िगरेशन टेम्पलेट बनाना
  3. CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग
  4. स्वास्थ्य जाँच, तत्परता द्वार और प्रतीक्षा लूप
← Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पर वापस जाएँ