KoderKoder.ai
ਕੀਮਤਾਂਐਂਟਰਪ੍ਰਾਈਜ਼ਸਿੱਖਿਆਨਿਵੇਸ਼ਕਾਂ ਲਈ
ਲੌਗ ਇਨਸ਼ੁਰੂ ਕਰੋ

ਉਤਪਾਦ

ਕੀਮਤਾਂਐਂਟਰਪ੍ਰਾਈਜ਼ਨਿਵੇਸ਼ਕਾਂ ਲਈ

ਸਰੋਤ

ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋਸਹਾਇਤਾਸਿੱਖਿਆਬਲੌਗ

ਕਾਨੂੰਨੀ

ਗੋਪਨੀਯਤਾ ਨੀਤੀਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂਸੁਰੱਖਿਆਸਵੀਕਾਰਯੋਗ ਵਰਤੋਂ ਨੀਤੀਦੁਰਵਰਤੋਂ ਦੀ ਰਿਪੋਰਟ ਕਰੋ

ਸੋਸ਼ਲ

LinkedInTwitter
Koder.ai
ਭਾਸ਼ਾ

© 2026 Koder.ai. ਸਾਰੇ ਅਧਿਕਾਰ ਰਾਖਵੇਂ ਹਨ।

ਹੋਮ›ਬਲੌਗ›Solomon Hykes ਅਤੇ Docker: ਕਿਉਂ ਕੰਟੇਨਰ ਡਿਫਾਲਟ ਬਣ ਗਏ
06 ਦਸੰ 2025·8 ਮਿੰਟ

Solomon Hykes ਅਤੇ Docker: ਕਿਉਂ ਕੰਟੇਨਰ ਡਿਫਾਲਟ ਬਣ ਗਏ

ਜਾਣੋ ਕਿ Solomon Hykes ਅਤੇ Docker ਨੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਕਿਵੇਂ ਲੋਕਪ੍ਰਿਯ ਬਣਾਇਆ, Dockerfile, ਇਮੇਜ ਅਤੇ ਰਜਿਸਟਰੀਜ਼ ਨੂੰ ਆਧੁਨਿਕ ਐਪਾਂ ਦੀ ਪੈਕੇਜਿੰਗ ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਦਾ ਮਿਆਰ ਕਿਉਂ ਬਣਾਇਆ।

Solomon Hykes ਅਤੇ Docker: ਕਿਉਂ ਕੰਟੇਨਰ ਡਿਫਾਲਟ ਬਣ ਗਏ

ਇਸ ਕਹਾਣੀ 'ਚ ਕੀ ਵਿਆਖਿਆ ਹੈ (ਅਤੇ ਇਹ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ)

Solomon Hykes ਉਹ ਇੰਜੀਨੀਅਰ ਹਨ ਜਿਨ੍ਹਾਂ ਨੇ ਇੱਕ ਲੰਮੇ ਸਮੇਂ ਦੀ ਸੋਚ—ਸੌਫਟਵੇਅਰ ਨੂੰ ਐਸਾ ਆਈਸੋਲੇਟ ਕਰਨਾ ਤਾਂ ਕਿ ਉਹ ਹਰ ਥਾਂ ਇੱਕੋ ਤਰ੍ਹਾਂ ਚੱਲੇ—ਨੂੰ ਇੱਕ ਐਸਾ ਹਾਲ ਬਣਾਇਆ ਜੋ ਟੀਮਾਂ ਰੋਜ਼ਾਨਾ ਵਰਤ ਸਕਣ। 2013 ਵਿੱਚ, ਉਸ ਪ੍ਰਾਜੈਕਟ ਨੇ Docker ਦਾ ਰੂਪ ਲਿਆ, ਅਤੇ ਇਸ ਨੇ ਜਲਦੀ ਹੀ ਕੰਪਨੀਆਂ ਦੇ ਐਪ ਸ਼ਿਪ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਬਦਲ ਦਿੱਤਾ।

ਉਸ ਸਮੇਂ ਦਰਦ ਸਧਾਰਨ ਤੇ ਪਰਿਚਿਤ ਸੀ: ਇੱਕ ਐਪ ਡਿਵੈਲਪਰ ਦੇ ਲੈਪਟਾਪ 'ਤੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਚੱਲਦਾ, ਫਿਰ ਸਾਥੀ ਦੀ ਮਸ਼ੀਨ 'ਤੇ ਵੱਖਰਾ ਵਰਤੋਂ ਕਰਦਾ, ਅਤੇ ਫਿਰ ਸਟੇਜਿੰਗ ਜਾਂ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਦੁਬਾਰਾ ਟੁੱਟ ਜਾਂਦਾ। ਇਹ “ਇਨਕਨਸਿਸਟੈਂਟ ਵਾਤਾਵਰਣ” ਸਿਰਫ਼ ਪਰੇਸ਼ਾਨੀ ਨਹੀਂ ਸਨ—ਇਹ ਰਿਲੀਜ਼ ਨੂੰ ਧੀਮਾ ਕਰਦੇ, ਬੱਗਾਂ ਨੂੰ ਮੁਸ਼ਕਿਲ ਨਾਲ ਦੁਹਰਾਉਣਾ ਬਣਾਉਂਦੇ, ਅਤੇ ਡਿਵੈਲਪਮੈਂਟ ਅਤੇ ਓਪਰੇਸ਼ਨਜ਼ ਵਿਚ ਲੰਬੀਆਂ ਹੱਥ ਬਦਲਦੀਆਂ ਪੈਦਾ ਕਰਦੀਆਂ।

Docker ਨੇ ਕਿਹੜੀ ਸਮੱਸਿਆ ਹੱਲ ਕੀਤੀ (ਸਿੱਧੀ ਭਾਸ਼ਾ 'ਚ)

Docker ਨੇ ਟੀਮਾਂ ਨੂੰ ਇੱਕ ਦੁਹਰਾਏਜੋਗ ਤਰੀਕਾ ਦਿੱਤਾ ਜਿਸ ਨਾਲ ਐਪ ਨੂੰ ਉਸਦੀ ਉਮੀਦ ਕੀਤੀ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਦੇ ਨਾਲ ਪੈਕੇਜ ਕੀਤਾ ਜਾ ਸਕੇ—ਤਾਂ ਜੋ ਐਪ ਲੈਪਟਾਪ, ਟੈਸਟ ਸਰਵਰ ਜਾਂ ਕਲਾਉਡ 'ਚ ਇੱਕੋ ਜਿਹਾ ਚੱਲ ਸਕੇ।

ਇਸੇ ਲਈ ਲੋਕ ਕਹਿੰਦੇ ਹਨ ਕਿ ਕੰਟੇਨਰ "ਡਿਫਾਲਟ ਪੈਕੇਜਿੰਗ ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਯੂਨਿਟ" ਬਣ ਗਏ। ਸਧਾਰਨ ਤੌਰ 'ਤੇ:

  • ਪੈਕੇਜਿੰਗ ਯੂਨਿਟ: ਜੋ ਤੁਸੀਂ ਬਣਾਉਂਦੇ ਅਤੇ ਸਟੋਰ ਕਰਦੇ ਹੋ (ਇੱਕ ਕੰਟੇਨਰ ਇਮੇਜ)
  • ਡਿਪਲਾਇਮੈਂਟ ਯੂਨਿਟ: ਜੋ ਤੁਸੀਂ ਕਿਸੇ ਵਾਤਾਵਰਣ 'ਚ ਚਲਾਉਂਦੇ ਹੋ (ਇੱਕ ਕੰਟੇਨਰ)

“ਏਕ ZIP ਫਾਇਲ ਤੇ ਸੈਟਅਪ ਨਿਰਦੇਸ਼ਾਂ” ਨੂੰ ਡਿਪਲੋਏ ਕਰਨ ਦੀ ਬਜਾਏ, ਬਹੁਤ ਸਾਰੀਆਂ ਟੀਮਾਂ ਇੱਕ ਐਸੀ ਇਮੇਜ ਡਿਪਲੋਏ ਕਰਦੀਆਂ ਹਨ ਜਿਸ ਵਿੱਚ ਐਪ ਨੂੰ ਜੋ ਚਾਹੀਦਾ ਹੈ ਉਹ ਪਹਿਲਾਂ ਤੋਂ ਸ਼ਾਮਿਲ ਹੁੰਦਾ ਹੈ। ਨਤੀਜਾ: ਘੱਟ ਅਚੰਭੇ ਅਤੇ ਤੇਜ਼, ਅਨੁਮਾਨਯੋਗ ਰਿਲੀਜ਼।

ਤੁਸੀਂ ਇਸ ਕਹਾਣੀ ਤੋਂ ਕੀ ਪ੍ਰਾਪਤ ਕਰੋਗੇ

ਇਹ ਲੇਖ ਇਤਿਹਾਸ ਅਤੇ ਕਾਰਗਿਰੀ ਸੰਕਲਪ ਨੂੰ ਮਿਲਾਉਂਦਾ ਹੈ। ਤੁਸੀਂ ਜਾਣੋਗੇ ਕਿ Solomon Hykes ਇਸ ਸੰਦਰਭ 'ਚ ਕੌਣ ਨੇ, Docker ਨੇ ਕੀ ਲਿਆਂਦਾ ਜੋ ਠੀਕ ਸਮੇਂ 'ਤੇ ਆਇਆ, ਅਤੇ ਮੁੱਢਲੇ ਮਿਕੈਨਿਕਸ—ਗਹਿਰੇ ਢਾਂਚਾਗਤ ਗਿਆਨ ਦੀ ਮੰਗ ਕੀਤੇ ਬਿਨਾਂ।

ਤੁਸੀਂ ਇਹ ਵੀ ਵੇਖੋਗੇ ਕਿ ਅੱਜ ਕੰਟੇਨਰ ਕਿੱਥੇ ਫਿੱਟ ਹੁੰਦੇ ਹਨ: CI/CD ਅਤੇ DevOps ਵਰਕਫਲੋਜ਼ ਨਾਲ ਕਿਵੇਂ ਜੁੜਦੇ ਹਨ, Kubernetes ਵਰਗੇ ਔਰਕੇਸਟਰਸ਼ਨ ਟੂਲ ਕਿਉਂ ਬਾਅਦ ਵਿੱਚ ਅਹਮ ਹੋਏ, ਅਤੇ ਕੰਟੇਨਰ ਆਪਣੇ ਆਪ ਕਿਹੜੀਆਂ ਗੱਲਾਂ ਸਹੀ ਨਹੀਂ ਕਰਦੇ (ਖ਼ਾਸ ਕਰਕੇ ਸੁਰੱਖਿਆ ਅਤੇ ਭਰੋਸੇ ਨਾਲ ਜੁੜੀਆਂ ਗੱਲਾਂ)।

ਅੰਤ ਤੱਕ, ਤੁਸੀਂ ਸਪਸ਼ਟ ਅਤੇ ਭਰੋਸੇਯੋਗ ਤਰੀਕੇ ਨਾਲ ਸਮਝਾ ਸਕੋਗੇ ਕਿ "ਇੱਕ ਕੰਟੇਨਰ ਵਜੋਂ ਭੇਜੋ" ਕਿਉਂ ਆਧੁਨਿਕ ਐਪ ਡਿਪਲਾਏਮੈਂਟ ਲਈ ਇੱਕ ਡਿਫਾਲਟ ਅਨੁਮਾਨ ਬਣ ਗਿਆ।

Docker ਤੋਂ ਪਹਿਲਾਂ: ਐਪ ਭੇਜਣਾ ਕਿਉਂ ਮੁਸ਼ਕਿਲ ਸੀ

ਕੰਟੇਨਰਾਂ ਦੇ ਮੈਨਸਟ੍ਰੀਮ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ, ਡਿਵੈਲਪਰ ਦੇ ਲੈਪਟਾਪ ਤੋਂ ਸਰਵਰ ਤੱਕ ਇੱਕ ਐਪ ਲਿਜਾਣਾ ਆਮ ਤੌਰ 'ਤੇ ਲਿਖਣ ਤੋਂ ਜ਼ਿਆਦਾ ਦਰਦਨਾਕ ਹੁੰਦਾ ਸੀ। ਟੀਮਾਂ ਕੋਲ ਹੁਨਰ ਨਹੀਂ ਘੱਟ ਸੀ—ਉਹਨਾਂ ਕੋਲ “ਉਹ ਚੀਜ਼ ਜੋ ਕੰਮ ਕਰਦੀ ਹੈ” ਨੂੰ ਵਾਤਾਵਰਣਾਂ ਵਿਚ ਲਿਜਾਣ ਦਾ ਭਰੋਸੇਯੋਗ ਤਰੀਕਾ ਨਹੀਂ ਸੀ।

“ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ” ਇੱਕ ਅਸਲ ਸਮੱਸਿਆ ਸੀ

ਇੱਕ ਡਿਵੈਲਪਰ ਆਪਣੀ ਮਸ਼ੀਨ 'ਤੇ ਐਪ ਠੀਕ ਚਲਾ ਸਕਦਾ ਸੀ, ਫਿਰ ਇਹ ਸਟੇਜਿੰਗ ਜਾਂ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਫੇਲ ਹੋ ਜਾਂਦਾ। ਕਾਰਨ ਕੋਡ ਵਿੱਚ ਤਬਦੀਲੀ ਨਹੀਂ—ਬਲਕਿ ਵਾਤਾਵਰਣ ਵਿੱਚ ਹੁੰਦੀ ਸੀ। ਵੱਖਰੇ OS ਵਰਜ਼ਨ, ਗੁੰਮ ਲਾਇਬ੍ਰੇਰੀਆਂ, ਥੋੜ੍ਹੇ ਭਿੰਨ ਕੰਫਿਗ ਫਾਇਲਾਂ, ਜਾਂ ਡੇਟਾਬੇਸ ਦੇ ਵੱਖਰੇ defaults—ਇਹ ਸਭ ਇੱਕੋ ਬਿਲਡ ਨੂੰ ਟੁੱਟ ਸਕਦੇ ਸਨ।

ਡੀਪੈਂਡੈਂਸੀ ਸੰਘਰਸ਼ ਅਤੇ ਲੰਬੇ ਸੈਟਅਪ ਡੌਕਸ

ਬਹੁਤ ਪ੍ਰਾਜੈਕਟ ਲੰਬੀਆਂ ਤੇ ਨਾਜ਼ੁਕ ਸੈਟਅਪ ਹਦਾਇਤਾਂ 'ਤੇ ਨਿਰਭਰ ਹੁੰਦੇ ਸਨ:

  • ਇਸ ਭਾਸ਼ਾ ਰਨਟਾਈਮ ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ
  • ਉਸ ਸਿਸਟਮ ਪੈਕੇਜ ਨੂੰ ਕੰਪਾਇਲ ਕਰੋ
  • ਕਿਸੇ ਖਾਸ ਲਾਇਬ੍ਰੇਰੀ ਵਰਜ਼ਨ ਨੂੰ ਫਿਕਸ ਕਰੋ
  • ਠੀਕ ਥਾਂ ਤੇ ਵਾਤਾਵਰਣ ਵੈਰੀਏਬਲ ਸੈੱਟ ਕਰੋ

ਹਰ ਚੀਜ਼ ਧੀਰੇ-ਧੀਰੇ ਬੁਰ੍ਹਦੀ ਸੀ। ਇੱਕ ਸਾਥੀ ਦੀ ਡੀਪੈਂਡੈਂਸੀ ਅਪਡੇਟ onboarding ਨੂੰ ਸਾਰਿਆਂ ਲਈ ਟੁੱਟ ਸਕਦੀ ਸੀ।

ਸ਼ਰਾਰੀ, ਇੱਕੋ ਸਰਵਰ 'ਤੇ ਦੋ ਐਪ ਨੂੰ ਇੱਕੋ ਰਨਟਾਈਮ ਜਾਂ ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਵਿਭਿੰਨ ਸੰਸਕਰਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਸੀ, ਜੋ ਅਕਸਰ ਅਜਿਹੀਆਂ ਕੰਮਪਲੇਕਸ ਵਰਕਅਰਾਊਂਡ ਜਾਂ ਵੱਖਰੇ ਮਸ਼ੀਨਾਂ ਦੀ ਲੋੜ ਪੈਦਾ ਕਰ ਦਿੰਦਾ।

ਪੈਕੇਜਿੰਗ ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਅਲੱਗ-ਅਲੱਗ ਸਨ—ਅਤੇ ਮਿਲਦੇ ਨਹੀਂ ਸਨ

“ਪੈਕੇਜਿੰਗ” ਆਮ ਤੌਰ 'ਤੇ ZIP, tarball, ਜਾਂ ਇੱਕ ਇੰਸਟਾਲਰ ਬਣਾਉਣਾ ਹੁੰਦਾ ਸੀ। “ਡਿਪਲਾਇਮੈਂਟ” ਦਾ ਮਤਲਬ ਦੂਜੇ ਸਕ੍ਰਿਪਟ ਅਤੇ ਸਰਵਰ ਸਟੈਪ ਸਨ: ਮਸ਼ੀਨ ਪ੍ਰੋવિਜ਼ਨ ਕਰੋ, ਉਸਨੂੰ ਸੰਰਚਿਤ ਕਰੋ, ਫਾਇਲਾਂ ਨਕਲ ਕਰੋ, ਸੇਵਾਵਾਂ ਰੀਸਟਾਰਟ ਕਰੋ, ਅਤੇ ਆਸ ਕਰੋ ਕਿ ਹੋਰ ਕੁਝ ਪ੍ਰਭਾਵਿਤ ਨਾ ਹੋਵੇ।

ਇਹ ਦੋ ਚਿੰਤਾਵਾਂ ਕਦੇ ਸਾਫ਼-ਸੁਥਰੀ ਤਰ੍ਹਾਂ ਮਿਲਦੀਆਂ ਨਹੀਂ। ਪੈਕੇਜ ਨੇ ਉਸਦੀ ਜਰੂਰਤ ਵਾਲਾ ਵਾਤਾਵਰਣ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵਰਣਨ ਨਹੀਂ ਕੀਤਾ, ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਪ੍ਰਕਿਰਿਆ ਟਾਰਗਟ ਸਰਵਰ ਦੇ "ਸਹੀ ਤਰ੍ਹਾਂ" ਤਿਆਰ ਹੋਣ 'ਤੇ ਨਿਰਭਰ ਸੀ।

ਗੁੰਮ ਹੋਈ ਕੜੀ: ਇੱਕ ਪੋਰਟੇਬਲ ਯੂਨਿਟ

ਟੀਮਾਂ ਨੂੰ ਇੱਕ ਐਸਾ ਇਕਾਈ ਚਾਹੀਦੀ ਸੀ ਜੋ ਆਪਣੇ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਨਾਲ ਸਫ਼ਰ ਕਰ ਸਕੇ ਅਤੇ ਲੈਪਟਾਪ, ਟੈਸਟ ਸਰਵਰ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਮੁਸਲਸਲ ਚਲ ਸਕੇ। ਦੁਹਰਾਏਜੋਗ ਸੈਟਅਪ, ਘੱਟ ਸੰਘਰਸ਼, ਅਤੇ ਅਨੁਮਾਨਯੋਗ ਡਿਪਲਾਇਮੈਂਟ ਦੀ ਦਬਾਅ ਨੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਐਪ ਭੇਜਣ ਦਾ ਡਿਫਾਲਟ ਤਰੀਕਾ ਬਣਾਉਣ ਲਈ ਮੰਚ ਤਿਆਰ ਕੀਤਾ।

Solomon Hykes ਅਤੇ Docker ਦਾ ਜਨਮ (ਉੱਚ-ਸਤਰ ਦਾ ਸਮਾਂ-ਰੇਖਾ)

Docker ਕੋਈ ਵੱਡੇ ਨਕਸ਼ੇ ਦੇ ਤਹਿਤ "ਸੌਫਟਵੇਅਰ ਨੂੰ ਸਦਾ ਲਈ ਬਦਲਣ" ਲਈ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਇਆ। ਇਹ Practical engineering ਕੰਮ ਤੋਂ ਉਭਰਿਆ ਜੋ Solomon Hykes ਨੇ platform-as-a-service ਉਤਪਾਦ ਬਣਾਉਂਦਿਆਂ ਲੀਡ ਕੀਤਾ। ਟੀਮ ਨੂੰ ਐਪ ਨੂੰ ਵੱਖ-ਵੱਖ ਮਸ਼ੀਨਾਂ 'ਤੇ ਬਿਨਾਂ "ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਦੋਹਰਾਏ ਬਿਨਾਂ ਪੈਕੇਜ ਅਤੇ ਚਲਾਉਣ ਦਾ ਇੱਕ ਦੁਹਰਾਏਜੋਗ ਤਰੀਕਾ ਚਾਹੀਦਾ ਸੀ।

ਇਕ ਪਲੇਟਫਾਰਮ ਸਮੱਸਿਆ ਤੋਂ ਦੁਬਾਰਾ ਵਰਤਣਯੋਗ ਟੂਲ ਤੱਕ

Docker ਨੂੰ ਘਰਾਉਣ ਵਾਲਾ ਪ੍ਰਾਜੈਕਟ ਇੱਕ ਆਤੰਰੀਕ ਹੱਲ ਵਜੋਂ ਉਭਰਿਆ—ਇਹ ਕੁਝ ਐਸਾ ਸੀ ਜਿਸ ਨਾਲ ਡਿਪਲਾਇਮੈਂਟ ਭਰੋਸੇਯੋਗ ਹੋ ਗਏ ਅਤੇ ਵਾਤਾਵਰਣ ਸਥਿਰ ਹੋ ਗਏ। ਜਦ ਟੀਮ ਨੇ ਸਮਝਿਆ ਕਿ ਇਹ ਮਕੈਨਿਸਮ ਆਪਣੇ ਹੀ ਉਤਪਾਦ ਤੋਂ ਬਾਹਰ ਵੀ ਲਾਭਦਾਇਕ ਹੈ, ਤਾਂ ਉਨ੍ਹਾਂ ਨੇ ਇਸਨੂੰ ਪਬਲਿਕ ਕੀਤਾ।

ਉਸ ਰਿਲੀਜ਼ ਨੇ ਪ੍ਰਾਇਵੇਟ ਡਿਪਲਾਇਮੈਂਟ ਤਕਨੀਕ ਨੂੰ ਇੱਕ ਸਾਂਝੇ ਟੂਲਚੇਨ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ, ਜਿਸਨੂੰ ਪੂਰੀ ਉਦਯੋਗ ਅਪਣਾ ਸਕਦੀ ਸੀ, ਸੁਧਾਰ ਸਕਦੀ ਸੀ, ਅਤੇ ਮਿਆਰੀਕ੍ਰਿਤ ਕਰ ਸਕਦੀ ਸੀ।

“Docker” ਅਤੇ “ਕੰਟੇਨਰ” ਇਕੋ ਨਹੀਂ

ਇਹ ਆਸਾਨੀ ਨਾਲ ਧੁੰਦਲੇ ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਉਹ ਵੱਖ ਹਨ:

  • ਕੰਟੇਨਰ ਸੰਕਲਪ ਹਨ: OS-ਸਤਹ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਈਸੋਲੇਟਡ ਪ੍ਰੋਸੈਸ ਜੋ ਐਪ ਚਲਾਂਦੇ ਹਨ।
  • Docker (ਪ੍ਰਾਜੈਕਟ ਅਤੇ ਫਿਰ ਕੰਪਨੀ) ਉਹ ਪ੍ਰਭਾਵਸ਼ালী ਅਨੁਭਵ ਸੀ ਜਿਸ ਨੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਰੋਜ਼ਾਨਾ ਡਿਵੈਲਪਰ ਲਈ ਆਸਾਨ ਬਣਾਇਆ।

ਕੰਟੇਨਰ Docker ਤੋਂ ਪਹਿਲਾਂ ਵੀ ਵੱਖ-ਵੱਖ ਰੂਪਾਂ ਵਿੱਚ ਮੌਜੂਦ ਸਨ। ਪਰ ਬਦਲਾਅ ਇਹ ਸੀ ਕਿ Docker ਨੇ ਵਰਕਫਲੋ ਨੂੰ ਡਿਵੈਲਪਰ-ਫ੍ਰੈਂਡਲੀ ਕਮਾਂਡਾਂ ਅਤੇ ਰੀਤੀ-ਰਿਵਾਜਾਂ ਵਿੱਚ ਪੈਕੇਜ ਕਰ ਦਿੱਤਾ—ਇਮੇਜ ਬਣਾਓ, ਇੱਕ ਕੰਟੇਨਰ ਚਲਾਓ, ਉਹਨੂੰ ਕਿਸੇ ਦੂਜੇ ਨਾਲ ਸਾਂਝਾ ਕਰੋ।

ਦੈਨੀਕ ਡਿਵੈਲਪਰ ਕੰਮ ਨੂੰ ਬਦਲਣ ਵਾਲੇ ਮੀਲ-ਪੱਥਰ

ਕੁਝ ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਜਾਣੇ ਜਾਂਦੇ ਕਦਮਾਂ ਨੇ Docker ਨੂੰ “ਦਿਲਚਸਪ” ਤੋਂ “ਡਿਫਾਲਟ” ਤੱਕ ਧੱਕਾ ਦਿੱਤਾ:

  • ਸਧਾਰਨ ਬਿਲਡ ਫਾਰਮੈਟ (Dockerfile): ਐਪ ਪੈਕੇਜਿੰਗ ਨੂੰ ਰੈਸੀਪੀ ਲਿਖਣ ਵਰਗਾ ਬਣਾ ਦਿੱਤਾ
  • ਮਿਆਰੀ ਆਰਟੀਫੈਕਟ (ਇਮੇਜ): ਟੀਮਾਂ ਨੂੰ ਵਾਤਾਵਰਣਾਂ ਨੂੰ ਵਰਜ਼ਨ ਕੀਤੇ ਜਾ ਸਕਦੇ ਡਿਲਿਵਰੇਬਲ ਵਾਂਗ ਦੇਖਣ ਦੀ ਆਜ਼ਾਦੀ ਦਿੱਤੀ
  • ਰਜਿਸਟਰੀਜ਼ ਰਾਹੀਂ ਆਸਾਨ ਸਾਂਝਾ: "ਪੁੱਲ ਕਰੋ ਅਤੇ ਚਲਾਓ" ਵਰਕਫਲੋ ਲੈਪਟਾਪ, CI ਸਰਵਰ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਸਧਾਰਨ ਹੋ ਗਿਆ
  • ਏਕੋਸਿਸਟਮ ਅਤੇ ਮਿਆਰੀਕਰਨ ਕੋਸ਼ਿਸ਼ਾਂ: ਕੰਟੇਨਰ ਇਮੇਜਾਂ ਅਤੇ ਰਨਟਾਈਮ ਨੂੰ ਇੱਕ ਵਿਕਰੇਤਾ ਤੱਕ ਸੀਮਿਤ ਨਾ ਰਹਿਣ ਦੇ ਕੇ ਉਦਯੋਗਕ interfaces ਵਾਂਗ ਮਦਦ ਮਿਲੀ

ਪ੍ਰੈਕਟਿਕਲ ਨਤੀਜਾ: ਡਿਵੈਲਪਰਾਂ ਨੇ ਵਾਤਾਵਰਣ ਨਕਲ ਕਰਨ ਦੀ ਬਹਸ ਛੱਡ ਦਿੱਤੀ ਅਤੇ ਹਰ ਥਾਂ ਇੱਕੋ ਚਲਣ ਯੋਗ ਯੂਨਿਟ ਭੇਜਣ ਲੱਗੇ।

Containers 101: ਉਹ ਕੀ ਹਨ (ਅਤੇ ਕੀ ਨਹੀਂ)

ਕੰਟੇਨਰ ਇੱਕ ਤਰੀਕਾ ਹੈ ਜਿਸ ਨਾਲ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪੈਕੇਜ ਅਤੇ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਉਹ ਤੁਹਾਡੇ ਲੈਪਟਾਪ, ਕਿਸੇ ਸਾਥੀ ਦੀ ਮਸ਼ੀਨ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਇੱਕੋ ਤਰ੍ਹਾਂ ਵਰਤੋਂ ਕਰੇ। ਮੁੱਖ ਵਿਚਾਰ ਹੈ ਵੱਡੀ ਨਵੀਂ ਮਸ਼ੀਨ ਬਿਨਾਂ ਆਈਸੋਲੇਸ਼ਨ।

ਕੰਟੇਨਰ vs ਵਰਚੁਅਲ ਮਸ਼ੀਨ (ਸਧਾਰਨ ਸੋਚ ਦਾ ਮਾਡਲ)

VM ਇੱਕ ਪੂਰੇ ਫਲੈਟ ਦੇ ਕਿਰਾਏ 'ਤੇ ਲੈਣ ਵਰਗਾ ਹੈ: ਤੁਹਾਨੂੰ ਆਪਣਾ ਦਰਵਾਜ਼ਾ, ਆਪਣੀਆਂ ਯੂਟਿਲਿਟੀਜ਼ ਅਤੇ ਆਪਣਾ OS ਮਿਲਦਾ ਹੈ। ਇਸ ਲਈ VMs ਵੱਖ-ਵੱਖ OS ਚਲਾਉਣ ਦੇ ਯੋਗ ਹੁੰਦੇ ਹਨ, ਪਰ ਭਾਰੇ ਹੁੰਦੇ ਹਨ ਅਤੇ ਆਮ ਤੌਰ 'ਤੇ ਲੰਮੇ ਸਮੇਂ ਲਈ ਬੂਟ ਹੁੰਦੇ ਹਨ।

ਕੰਟੇਨਰ ਇੱਕ ਸਾਂਝੀ ਇਮਾਰਤ ਵਿੱਚ ਇੱਕ ਲੌਕ ਕੀਤੇ ਹੋਏ ਕਮਰੇ ਨੂੰ ਕਿਰਾਏ 'ਤੇ ਲੈਣ ਵਰਗਾ ਹੈ: ਤੁਸੀਂ ਆਪਣਾ ਫਰਨੀচার (ਐਪ ਕੋਡ + ਲਾਇਬ੍ਰੇਰੀਆਂ) ਲਿਆਉਂਦੇ ਹੋ, ਪਰ ਇਮਾਰਤ ਦੀਆਂ ਯੂਟਿਲਿਟੀਜ਼ (ਹੋਸਟ OS kernel) ਸਾਂਝੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਹੋਰ ਕਮਰਿਆਂ ਤੋਂ ਵੱਖਰੇ ਰਹਿੰਦੇ ਹੋ, ਪਰ ਹਰ ਵਾਰੀ ਇਕ ਨਵਾਂ OS ਸ਼ੁਰੂ ਨਹੀਂ ਕਰਦੇ।

ਕੰਟੇਨਰ ਐਪਾਂ ਨੂੰ ਕਿਵੇਂ ਆਈਸੋਲੇਟ ਕਰਦੇ ਹਨ (ਸੰਕਲਪਿਕ)

Linux 'ਤੇ, ਕੰਟੇਨਰ ਅੰਦਰੂਨੀ ਆਈਸੋਲੇਸ਼ਨ ਫੀਚਰਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ ਜੋ:

  • ਪ੍ਰੋਸੈਸਜ਼ ਨੂੰ ਆਪਣਾ "ਨਜ਼ਰ" ਦਿੰਦੇ ਹਨ (ਤਾਂ ਜੋ ਐਪ A ਨੂੰ ਐਪ B ਦੀਆਂ ਫਾਈਲਾਂ ਅਤੇ ਪ੍ਰੋਸੈਸ ਨਾ ਦਿਖਣ)
  • CPU ਅਤੇ ਮੈਮੋਰੀ ਵਰਗੇ ਸਰੋਤਾਂ ਨੂੰ ਸੀਮਿਤ ਅਤੇ ਗਿਣਤੀ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਦਿੰਦੀਆਂ ਹਨ (ਤਾਂ ਜੋ ਇੱਕ ਸ਼ੋਰ ਕਰਨ ਵਾਲਾ ਐਪ ਦੂਜਿਆਂ ਨੂੰ ਬਾਰ-ਬਾਰੀ ਭੁੱਖਾ ਨਾ ਕਰ ਸਕੇ)

ਤੁਹਾਨੂੰ kernel ਦੀਆਂ ਤਕਨੀਕੀ ਵਿਸਥਾਰਾਂ ਜਾਣਨ ਦੀ ਲੋੜ ਨਹੀਂ ਤਾਂ ਕਿ ਤੁਸੀਂ ਕੰਟੇਨਰ ਵਰਤ ਸਕੋ, ਪਰ ਇਹ ਜਾਣਨਾ ਮਦਦਗਾਰ ਹੈ ਕਿ ਇਹ OS ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਨ—ਕੋਈ ਜਾਦੂ ਨਹੀਂ।

ਲੋਕ ਕਿਉਂ ਪਸੰਦ ਕਰਦੇ ਹਨ

ਕੰਟੇਨਰ ਲੋਕਾਂ ਨੂੰ ਇਸ ਲਈ ਪਸੰਦ ਆਏ ਕਿਉਂਕਿ ਉਹ:

  • ਹਲਕੇ: VM ਇਮੇਜਾਂ ਨਾਲੋਂ ਛੋਟੇ, ਕਿਉਂਕਿ ਉਹ ਪੂਰਾ OS ਸ਼ਾਮਿਲ ਨਹੀਂ ਕਰਦੇ
  • ਤੇਜ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ: ਅਕਸਰ ਸਕਿੰਟਾਂ (ਜਾਂ ਇਸ ਤੋਂ ਘੱਟ) ਵਿੱਚ, ਜੋ ਸਕੇਲਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਲਈ ਵਧੀਆ ਹੈ
  • ਸਮਰਥਿਤ: ਇੱਕੋ ਪੈਕਡ ਰਨਟਾਈਮ "ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਦੀ ਸਮੱਸਿਆ ਘਟਾਉਂਦਾ ਹੈ

ਕੰਟੇਨਰ ਕੀ ਨਹੀਂ ਹਨ

ਕੰਟੇਨਰ ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ ਸੁਰੱਖਿਆ ਦੀ ਸੀਮਾ ਨਹੀਂ ਹਨ। ਕਿਉਂਕਿ ਕੰਟੇਨਰ ਹੋਸਟ kernel ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਇੱਕ kernel-ਸਤਹ ਦੀ ਵਲਨਰੇਬਿਲਿਟੀ ਕਈ ਕੰਟੇਨਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ। ਇਸ ਦਾ ਇਹ ਵੀ ਮਤਲਬ ਹੈ ਕਿ ਤੁਸੀਂ ਬਿਨਾਂ ਵਾਧੂ ਵਰਚੁਅਲਾਈਜ਼ੇਸ਼ਨ ਦੇ Linux kernel 'ਤੇ Windows ਕੰਟੇਨਰ ਨਹੀਂ ਚਲਾ ਸਕਦੇ।

ਇਸ ਲਈ: ਕੰਟੇਨਰ ਪੈਕੇਜਿੰਗ ਅਤੇ ਸਥਿਰਤਾ ਵਿੱਚ ਸੁਧਾਰ ਲਿਆਉਂਦੇ ਹਨ—ਪਰ ਤੁਹਾਨੂੰ ਫਿਰ ਵੀ ਸਮਾਰਟ ਸੁਰੱਖਿਆ, ਪੈਚਿੰਗ ਅਤੇ ਕੰਫਿਗਰੇਸ਼ਨ ਅਭਿਆਸ ਲਾਗੂ ਕਰਨੇ ਆਉਣਗੇ।

Docker ਮਾਡਲ: Dockerfile, ਇਮੇਜ, ਕੰਟੇਨਰ

Docker ਨੇ ਹਿੱਸਿਆਂ ਦਾ ਇੱਕ ਸਧਾਰਨ ਮਾਨਸਿਕ ਮਾਡਲ ਦਿੱਤਾ: ਇੱਕ Dockerfile (ਹਦਾਇਤਾਂ), ਇੱਕ ਇਮੇਜ (ਤਿਆਰ ਕੀਤੀ ਆਰਟੀਫੈਕਟ), ਅਤੇ ਇੱਕ ਕੰਟੇਨਰ (ਚੱਲਦਾ ਉਦਾਹਰਣ)। ਇਸ ਚੇਨ ਨੂੰ ਸਮਝ ਲੈਣ ਨਾਲ Docker ਏਕੋਸਿਸਟਮ ਦੇ ਬਾਕੀ ਹਿੱਸੇ ਸਹਿਜ ਸਮਝ ਆਉਂਦੇ ਹਨ।

Dockerfile: ਇੱਕ ਦੁਹਰਾਏ ਜਾਇਗਾ ਰੈਸੀਪੀ

Dockerfile ਇੱਕ ਪLAIN-ਟੈਕਸਟ ਫਾਇਲ ਹੈ ਜੋ ਤੁਹਾਡੇ ਐਪ ਪਰਿਵਾਰ ਦਾ ਨਿਰਮਾਣ ਕਦਮ-ਦਰ-কਦਮ ਵੇਰਵਾ ਦਿੰਦੀ ਹੈ। ਇਸਨੂੰ ਇਕ ਰੈਸੀਪੀ ਸਮਝੋ: ਇਹ ਆਪਣੇ ਆਪ ਕਿਸੇ ਨੂੰ ਖਿਲਾਉਂਦੀ ਨਹੀਂ, ਪਰ ਇਹ ਤੁਹਾਨੂੰ ਹਰ ਵਾਰੀ ਇੱਕੋ ਹੀ ਚੀਜ਼ ਤਿਆਰ ਕਰਨ ਦਾ ਨਿਰਦੇਸ਼ ਦਿੰਦੀ ਹੈ।

ਆਮ Dockerfile ਕਦਮਾਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੁੰਦਾ ਹੈ: ਇੱਕ ਬੇਸ ਚੁਣਨਾ (ਜਿਵੇਂ ਕਿਸੇ ਭਾਸ਼ਾ ਰਨਟਾਈਮ), ਆਪਣਾ ਐਪ ਕੋਡ ਕਾਪੀ ਕਰਨਾ, ਡੀਪੈਂਡੈਂਸੀਜ਼ ਇੰਸਟਾਲ ਕਰਨਾ, ਅਤੇ ਚਲਾਉਣ ਲਈ ਕਮਾਂਡ ਘੋਸ਼ਿਤ ਕਰਨਾ।

ਇਮੇਜ vs. ਕੰਟੇਨਰ: ਨਕਸ਼ਾ vs. ਚੱਲਦਾ ਐਪ

ਇਮੇਜ Dockerfile ਦਾ ਨਿਰਮਿਤ ਨਤੀਜਾ ਹੈ। ਇਹ ਸਾਰਾ ਕੁਝ ਪੈਕਡ ਸਨੈਪਸ਼ਾਟ ਹੈ: ਤੁਹਾਡਾ ਕੋਡ, ਡੀਪੈਂਡੈਂਸੀਜ਼, ਅਤੇ ਕੰਫਿਗ ਡਿਫੋਲਟ। ਇਹ "ਜੀਵਤ" ਨਹੀਂ—ਇਹ ਇੱਕ ਸੀਲ ਕੀਤੀ ਬਕਸੇ ਵਾਂਗ ਹੈ ਜਿਸਨੂੰ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਕੰਟੇਨਰ ਉਹ ਹੁੰਦਾ ਹੈ ਜਦ ਤੁਸੀਂ ਇੱਕ ਇਮੇਜ ਨੂੰ ਚਲਾਉਂਦੇ ਹੋ। ਇਹ ਇੱਕ ਲਾਈਵ ਪ੍ਰੋਸੈਸ ਹੈ ਜਿਸਦੀ ਆਪਣੀ ਆਈਸੋਲੇਟਡ ਫਾਈਲਸਿਸਟਮ ਅਤੇ ਸੈਟਿੰਗ ਹੁੰਦੀ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ, ਰੋਕ ਸਕਦੇ ਹੋ, ਰੀਸਟਾਰਟ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਇੱਕੋ ਇਮੇਜ ਤੋਂ ਕਈ ਕੰਟੇਨਰ ਬਣਾਉ ਸਕਦੇ ਹੋ।

ਲੇਅਰਸ ਅਤੇ ਕੈਸ਼ਿੰਗ: ਕਿਉਂ ਬਿਲਡ ਤੇਜ਼ ਹੋ ਸਕਦੇ ਹਨ

ਇਮੇਜ ਲੇਅਰਸ ਵਿੱਚ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। Dockerfile ਦੀ ਹਰ ਨਿਰਦੇਸ਼ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਨਵਾਂ ਲੇਅਰ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ Docker ਉਹਨਾਂ ਲੇਅਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਵਰਤਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਜਿਹੜੀਆਂ ਬਦਲੀ ਨਹੀਂ।

ਸਧਾਰਨ ਭਾਸ਼ਾ ਵਿੱਚ: ਜੇ ਤੁਸੀਂ ਸਿਰਫ਼ ਆਪਣੇ ਐਪ ਕੋਡ ਨੂੰ ਬਦਲਦੇ ਹੋ, ਤਾਂ Docker ਅਕਸਰ ਉਹ ਲੇਅਰਾਂ ਦੁਬਾਰਾ ਵਰਤ ਸਕਦਾ ਹੈ ਜੋ OS ਪੈਕੇਜ ਅਤੇ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਬਣੀਆਂ ਸਨ, ਜਿਸ ਨਾਲ ਰੀਬਿਲਡ ਤੇਜ਼ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਹ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿਚ ਪੂਨਰਵਰਤਨ ਨੂੰ ਉਤਸ਼ਾਹਤ ਕਰਦਾ ਹੈ—ਬਹੁਤ ਸਾਰੀਆਂ ਇਮੇਜ ਇੱਕੋ ਬੇਸ ਲੇਅਰਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਦੀਆਂ ਹਨ।

ਛੋਟਾ end-to-end ਫਲੋ

ਇਹ "ਰੈਸੀਪੀ → ਆਰਟੀਫੈਕਟ → ਚੱਲਦਾ ਉਦਾਹਰਣ" ਫਲੋ ਹੈ:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["node", "server.js"]
  • Dockerfile: ਉਪਰੇ ਲਿਖੇ ਨਿਰਦੇਸ਼
  • ਇਮੇਜ ਬਣਾਓ: docker build -t myapp:1.0 .
  • ਕੰਟੇਨਰ ਚਲਾਓ: docker run --rm -p 3000:3000 myapp:1.0

ਇਹ ਕੁਝ ਮੂਲ ਵਾਅਦਾ ਹੈ ਜੋ Docker ਨੇ ਪ੍ਰਸਿੱਧ ਕੀਤਾ: ਜੇ ਤੁਸੀਂ ਇਮੇਜ ਬਣਾਉਣ ਦੀ ਸਮਰੱਥਾ ਰੱਖਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇੱਕੋ ਚੀਜ਼ ਭਰੋਸੇਯੋਗ ਤਰੀਕੇ ਨਾਲ ਚਲਾ ਸਕਦੇ ਹੋ—ਲੈਪਟਾਪ, CI, ਜਾਂ ਸਰਵਰ 'ਤੇ—ਬਿਨਾਂ ਹਰ ਵਾਰੀ ਇੰਸਟਾਲੇਸ਼ਨ ਕਦਮ ਲਿਖਣ ਦੇ।

ਲੈਪਟਾਪ ਤੋਂ ਟੀਮ ਤੱਕ: ਰਜਿਸਟਰੀਜ਼ ਅਤੇ ਇਮੇਜਾਂ ਸਾਂਝਾ ਕਰਨਾ

ਫ੍ਰੀ ਤੋਂ ਬਿਜ਼ਨਸ ਤੱਕ ਸਕੇਲ ਕਰੋ
ਇਕ ਤੁਰੰਤ ਪ੍ਰੋਟੋਟਾਈਪ ਤੋਂ ਟੀਮ-ਤਿਆਰ ਸੈਟਅਪ ਤੱਕ ਜਾਓ ਜੋ ਤੁਹਾਡੇ ਲਈ ਢੰਗ ਦੀ ਯੋਜਨਾ ਦੇ ਨਾਲ।
ਅੱਪਗਰੇਡ ਕਰੋ

ਲੈਪਟਾਪ 'ਤੇ ਇੱਕ ਕੰਟੇਨਰ ਚਲਾਉਣਾ ਲਾਭਕਾਰੀ ਹੈ—ਪਰ ਇਹ ਬੜੀ ਤਬਦੀਲੀ ਨਹੀਂ। ਅਸਲ ਤਬਦੀਲੀ ਉਸ ਵੇਲੇ ਆਈ ਜਦ ਟੀਮਾਂ ਇੱਕ ਉਸੇ ਬਿਲਡ ਨੂੰ ਸਾਂਝਾ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਕਿਸੇ ਵੀ ਥਾਂ ਉਹਨੂੰ ਚਲਾ ਸਕਦੀਆਂ ਹਨ, "ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਵਾਲੀਆਂ ਦਲੀਲਾਂ ਤੋਂ ਬਿਨਾਂ।

Docker ਨੇ ਉਹ ਸਾਂਝਾ ਕਰਨ ਦਾ ਅਨੁਭਵ ਕੋਡ ਸਾਂਝਾ ਕਰਨ ਵਰਗਾ ਹੀ ਸਧਾਰਨ ਬਣਾ ਦਿੱਤਾ।

ਰਜਿਸਟਰੀ ਸਧਾਰਨ ਭਾਸ਼ਾ 'ਚ ਕੀ ਹੈ

ਕੰਟੇਨਰ ਰਜਿਸਟਰੀ ਇੱਕ ਸਟੋਰ ਹੈ ਲਈ ਕੰਟੇਨਰ ਇਮੇਜਾਂ। ਜੇ ਇਮੇਜ ਪੈਕਡ ਐਪ ਹੈ, ਤਾਂ ਰਜਿਸਟਰੀ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਵਰਜਨ ਯੋਗ ਬਿਲਡ ਰੱਖਦੇ ਹੋ ਤਾਂ ਕਿ ਹੋਰ ਲੋਕ ਅਤੇ ਸਿਸਟਮ ਉਹਨੂੰ ਫੈਚ ਕਰ ਸਕਣ।

ਰਜਿਸਟਰੀ ਇੱਕ ਸਿੱਧਾ ਵਰਕਫਲੋ ਸਹਿਯੋਗ ਕਰਦੀ ਹੈ:

  • Push: ਆਪਣੀ ਬਣਾਈ ਹੋਈ ਇਮੇਜ ਅੱਪਲੋਡ ਕਰੋ
  • Pull: ਕਿਸੇ ਹੋਰ ਨੇ ਬਣਾਈ ਇਮੇਜ ਡਾਊਨਲੋਡ ਕਰੋ
  • Version: ਕਈ ਨਾਮਿBਣ ਰਿਲੀਜ਼ ਰੱਖੋ ਤਾਂ ਕਿ ਤੁਸੀਂ ਅੱਗੇ ਜਾਂ ਪਿੱਛੇ ਜਾ ਸਕੋ

ਪਬਲਿਕ ਰਜਿਸਟਰੀਜ਼ (ਜਿਵੇਂ Docker Hub) ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਆਸਾਨ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਪਰ ਜ਼ਿਆਦਾਤਰ ਟੀਮਾਂ ਨੂੰ ਜਲਦੀ ਹੀ ਉਹ ਰਜਿਸਟਰੀ ਚਾਹੀਦੀ ਹੈ ਜੋ ਉਨ੍ਹਾਂ ਦੀਆਂ ਪਹੁੰਚ ਨੀਤੀਆਂ ਅਤੇ ਕਨਪਲਾਇੰਸ ਲੋੜਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੋਵੇ।

ਟੈਗ: ਇੱਕ ਛੋਟੀ ਆਦਤ ਜੋ ਵੱਡੀ ਸਮੱਸਿਆ ਤੋਂ ਬਚਾਉਂਦੀ ਹੈ

ਇਮੇਜ ਆਮ ਤੌਰ 'ਤੇ name:tag ਨਾਲ ਪਛਾਣ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ—for example myapp:1.4.2. ਉਹ ਟੈਗ ਸਿਰਫ਼ ਇੱਕ ਲੇਬਲ ਨਹੀਂ: ਇਹ ਮਨੁੱਖਾਂ ਅਤੇ ਆਟੋਮੇਸ਼ਨ ਲਈ ਇਹ ਤੈਅ ਕਰਨ ਦਾ तरीका ਹੈ ਕਿ ਕਿਹੜਾ ਬਿਲਡ ਚਲਾਉਣਾ ਹੈ।

ਅਕਸਰ ਗਲਤੀ latest ਤੇ ਨਿਰਭਰ ਹੋਣਾ ਹੈ। ਇਹ ਆਸਾਨ ਸੁਣਦਾ ਹੈ, ਪਰ ਅਸਪਸ਼ਟ ਹੈ: “latest” ਬਿਨਾਂ ਚੇਤਾਵਨੀ ਦੇ ਬਦਲ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਵਾਤਾਵਰਣ ਡ੍ਰਿਫਟ ਹੋ ਸਕਦੇ ਹਨ।

ਚੰਗੀਆਂ ਆਦਤਾਂ:

  • ਰਿਲੀਜ਼ ਲਈ ਸਪਸ਼ਟ ਵਰਜਨ ਟੈਗ ਵਰਤੋ (ਜਿਵੇਂ 1.4.2)
  • ਟ੍ਰੇਸਬਿਲਿਟੀ ਲਈ ਕਮਿਟ ਹੈਸ਼ ਨਾਲ ਵੀ ਟੈਗ ਕਰਨ 'ਤੇ غور ਕਰੋ
  • ਟੈਗਾਂ ਨੂੰ ਤੁਹਾਡੀ ਰਿਲੀਜ਼ ਪ੍ਰਕਿਰਿਆ ਦਾ ਹਿੱਸਾ ਬਣਾਓ, ਬਾਅਦ ਦਾ ਕੰਮ ਨਾ ਬਣਾਓ

ਪਰਾਈਵੇਟ ਰਜਿਸਟਰੀ ਟੀਮਾਂ ਲਈ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ

ਜਦੋਂ ਤੁਸੀਂ ਅੰਦਰੂਨੀ ਸੇਵਾਵਾਂ, ਪੇਡ ਡੀਪੈਂਡੈਂਸੀਜ਼, ਜਾਂ ਕੰਪਨੀ ਕੋਡ ਸਾਂਝਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਪਰਾਈਵੇਟ ਰਜਿਸਟਰੀ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਨਿਰਣਾਇਕ ਪਹੁੰਚ ਨਿਯੰਤਰਣ, ਸਿੰਗਲ ਸਾਇਨ-ਆਨ ਨਾਲ ਇੰਟੀਗ੍ਰੇਸ਼ਨ, ਅਤੇ ਪ੍ਰੋਪ੍ਰਾਈਟਰੀ ਸੌਫਟਵੇਅਰ ਨੂੰ ਪਬਲਿਕ ਇੰਡੈਕਸ ਤੋਂ ਬਚਾਉਣ ਦੀ ਆਜ਼ਾਦੀ ਦਿੰਦੀ ਹੈ।

ਇਹ "ਲੈਪਟਾਪ ਤੋਂ ਟੀਮ" ਕ਼ਦਮ ਹੈ: ਜਦ ਇਮੇਜ ਰਜਿਸਟਰੀ ਵਿਚ ਰਹਿੰਦੇ ਹਨ, ਤਾਂ ਤੁਹਾਡਾ CI ਸਿਸਟਮ, ਸਾਥੀ ਤੇ ਤੁਹਾਡੇ ਪ੍ਰੋਡਕਸ਼ਨ ਸਰਵਰ ਉਹੀ ਆਰਟੀਫੈਕਟ ਪੂਲ ਕਰ ਸਕਦੇ ਹਨ—ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਦੁਹਰਾਏਜੋਗ ਬਣ ਜਾਂਦਾ ਹੈ, ਨਾ ਕਿ ਤਿਆਰ ਕੀਤਾ ਗਿਆ।

CI/CD ਨਾਲ ਕੰਟੇਨਰ ਕਿਉਂ ਫਿੱਟ ਹੁੰਦੇ ਹਨ

CI/CD ਸਭ ਤੋਂ ਵਧੀਆ ਤਦੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦ ਉਹ ਤੁਹਾਡੇ ਐਪ ਨੂੰ ਇੱਕ ਹੀ, ਦੁਹਰਾਏਜੋਗ "ਚੀਜ਼" ਵਜੋਂ ਕਦਰ ਕਰ ਸਕੇ। ਕੰਟੇਨਰ ਇਹੀ ਦਿੰਦੇ ਹਨ: ਇੱਕ ਪੈਕਡ ਆਰਟੀਫੈਕਟ (ਇਮੇਜ) ਜੋ ਤੁਸੀਂ ਇੱਕ ਵਾਰੀ ਬਣਾਉਂਦੇ ਹੋ ਅਤੇ ਬਹੁਤ ਵਾਰੀ ਚਲਾਉਂਦੇ ਹੋ, ਜ਼ਿਆਦਾ "ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਵਾਲੀਆਂ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਘੱਟ।

ਸਟੈਂਡਰਡਾਈਜ਼ਡ ਲੋਕਲ ਡਿਵੈਲਪਮੈਂਟ

ਕੰਟੇਨਰਾਂ ਤੋਂ ਪਹਿਲਾਂ, ਟੀਮਾਂ ਅਕਸਰ ਲੰਬੇ ਸੈਟਅਪ ਡੌਕਸ ਅਤੇ ਸਾਂਝੇ ਸਕ੍ਰਿਪਟਾਂ ਨਾਲ ਵਾਤਾਵਰਣ ਮਿਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੀਆਂ ਸਨ। Docker ਨਿਰਯਾਤ ਵਰਕਫਲੋ ਨੂੰ ਬਦਲ ਦਿੱਤਾ: repo ਪੂਲ ਕਰੋ, ਇਮੇਜ ਬਣਾਓ, ਐਪ ਚਲਾਓ। ਐਕੋ ਕਮਾਂਡ ਅਕਸਰ macOS, Windows, ਅਤੇ Linux 'ਤੇ ਇੱਕੋ ਜਿਹੇ ਕੰਮ ਕਰਦੇ ਹਨ ਕਿਉਂਕਿ ਐਪ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਚਲ ਰਿਹਾ ਹੁੰਦਾ ਹੈ।

ਇਹ ਸਟੈਂਡਰਡਾਈਜੇਸ਼ਨ onboarding ਤੇਜ਼ ਕਰਦੀ ਹੈ। ਨਵੀਆ ਟੀਮ ਮੈਂਬਰਾਂ ਨੂੰ dependencies ਇੰਸਟਾਲ ਕਰਨ 'ਤੇ ਘੱਟ ਸਮਾਂ ਲੱਗਦਾ ਹੈ ਅਤੇ ਉਹ ਜ਼ਿਆਦਾ ਸਮਾਂ ਉਤਪਾਦ ਸਮਝਣ 'ਤੇ ਦਾਂਵ ਲਾ ਸਕਦੇ ਹਨ।

ਅਮਲ ਵਿੱਚ "ਇੱਕ ਵਾਰੀ ਬਣਾਓ, ਹਰ ਥਾਂ ਚਲਾਓ"

ਮਜ਼ਬੂਤ CI/CD ਸੈੱਟਅਪ ਦਾ ਮਕਸਦ ਇੱਕ pipeline ਆਉਟਪੁੱਟ ਲਈ ਹੈ। ਕੰਟੇਨਰਾਂ ਨਾਲ, ਆਉਟਪੁੱਟ ਇੱਕ ਵਰਜਨ ਟੈਗ ਕੀਤੀ ਹੋਈ ਇਮੇਜ ਹੁੰਦੀ ਹੈ (ਅਕਸਰ commit SHA ਨਾਲ ਜੋੜੀ ਜਾਂਦੀ)। ਉਹ ਉਹੀ ਇਮੇਜ dev → test → staging → production ਤੱਕ ਪ੍ਰੋਮੋਟ ਹੁੰਦੀ ਹੈ।

ਵਾਤਾਵਰਣ ਮੁਤਾਬਕ ਅਲੱਗ-ਅਲੱਗ ਬਿਲਡ ਕਰਨ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਕੰਫਿਗ (ਜਿਵੇਂ env vars) ਬਦਲਦੇ ਹੋ ਪਰ ਆਰਟੀਫੈਕਟ ਇੱਕੋ ਹੀ ਰਿਹਾ। ਇਸ ਨਾਲ ਵਾਤਾਵਰਣ ਡ੍ਰਿਫਟ ਘਟਦਾ ਅਤੇ ਰਿਲੀਜ਼ ਡੀਬੱਗ ਕਰਨਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।

CI ਪਾਇਪਲਾਈਨਾਂ ਲਈ ਕੁਦਰਤੀ ਮੇਲ

ਕੰਟੇਨਰ ਪਾਇਪਲਾਈਨ ਕਦਮਾਂ ਨਾਲ ਸਾਫ਼ ਮਿਲਦੇ ਹਨ:

  • Build: Dockerfile ਤੋਂ ਇਮੇਜ ਬਣਾਓ
  • Test: ਇਮੇਜ ਦੇ ਅੰਦਰ ਯੂਨਿਟ/ਇੰਟੇਗਰੇਸ਼ਨ ਟੈਸਟ ਚਲਾਓ
  • Scan: ਇਮੇਜ ਲਈ ਜਾਣੀਆਂ ਹੋਇਆਂ ਵਲਨਰੇਬਿਲਿਟੀਆਂ ਜਾਂ ਗਲਤ ਪੈਕੇਜਾਂ ਦੀ ਜਾਂਚ ਕਰੋ
  • Deploy: ਰਜਿਸਟਰੀ 'ਤੇ ਪੁਸ਼ ਕਰੋ, ਫਿਰ ਅਗਲੇ ਵਾਤਾਵਰਣ 'ਚ ਪੂਲ ਅਤੇ ਚਲਾਓ

ਕਿਉਂਕਿ ਹਰ ਕਦਮ ਇੱਕੋ ਪੈਕਡ ਐਪ 'ਤੇ ਚੱਲਦਾ ਹੈ, ਫੇਲਯਰ ਜ਼ਿਆਦਾ ਮਾਇਨੇ ਰੱਖਦੇ ਹਨ: CI 'ਚ ਪਾਸ ਹੋਇਆ ਟੈਸਟ ਬਾਅਦ ਡਿਪਲੋਏਟ 'ਚ ਵੀ ਇਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਦੀ ਸੰਭਾਵਨਾ ਵੱਧ ਹੁੰਦੀ ਹੈ।

ਜੇ ਤੁਸੀਂ ਆਪਣੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੁਧਾਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਸਧਾਰਨ ਨਿਯਮ (tagging conventions, image signing, basic scanning) ਲਗਾਉਣਾ ਲਾਭਦਾਇਕ ਹੈ ਤਾਂ ਕਿ pipeline ਅਨੁਮਾਨਯੋਗ ਰਹੇ। ਜਿਵੇਂ-ਜਿਵੇਂ ਟੀਮ ਵਧਦੀ ਹੈ, ਤੁਸੀਂ ਪ੍ਰਕਿਰਿਆ ਵਧਾ ਸਕਦੇ ਹੋ (ਆਮ ਗਲਤੀਆਂ ਅਤੇ ਉਹਨਾਂ ਤੋਂ ਕਿਵੇਂ ਬਚਣਾ ਦੇ ਬਾਰੇ ਵੇਖੋ)।

ਜਿੱਥੇ ਇਹ ਮੌਡਰਨ “vibe-coding” ਵਰਕਫਲੋਜ਼ ਨਾਲ ਜੁੜਦਾ ਹੈ: ਪਲੇਟਫਾਰਮਾਂ ਜਿਵੇਂ Koder.ai ਚੈਟ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਫੁੱਲ-ਸਟੈਕ ਐਪ (React, Go + PostgreSQL, Flutter) ਤਿਆਰ ਅਤੇ ਇਟਰੇਟ ਕਰ ਸਕਦੀਆਂ ਹਨ—ਪਰ ਫਿਰ ਵੀ ਤੁਹਾਨੂੰ ਇੱਕ ਭਰੋਸੇਯੋਗ ਪੈਕੇਜਿੰਗ ਯੂਨਿਟ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਕਿ “ਇਹ ਚੱਲਦਾ ਹੈ” ਤੋਂ “ਇਹ ਭੇਜੋ” ਤੱਕ ਜਾ ਸਕੋ। ਹਰ ਬਣਾਈ ਹੋਈ ਬਿਲਡ ਨੂੰ ਵਰਜਨ ਕੀਤੀ ਇਮੇਜ ਵਜੋਂ ਰੱਖਣਾ AI-ਸਹਾਇਕ ਵਿਕਾਸ ਦੇ ਨਾਲ ਵੀ CI/CD ਉਮੀਦਾਂ (ਦੁਹਰਾਏਜੋਗ ਬਿਨੈ, ਅਨੁਮਾਨਯੋਗ ਡਿਪਲੋਇਜ਼, ਰੋਲਬੈਕ-ਤਰਤੀਆ) ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।

ਸਕੇਲ 'ਤੇ ਚਲਾਉਣਾ: Kubernetes ਕਿਉਂ ਦਰਮਿਆਨ ਆਇਆ

ਸਪੈੱਕ ਤੋਂ Flutter ਤੱਕ ਜਾਓ
ਸਧਾਰਨ ਸਪੈੱਕ ਤੋਂ ਇੱਕ Flutter ਮੋਬਾਈਲ ਐਪ ਦਾ ਪ੍ਰੋਟੋਟਾਈਪ ਬਣਾਓ ਅਤੇ ਸਰੋਤ ਕੋਡ ਨਿਰਯਾਤ ਕਰੋ।
ਮੋਬਾਈਲ ਬਣਾਓ

Docker ਨੇ ਇੱਕ ਵਾਰੀ ਐਪ ਪੈਕੇਜ ਕਰਕੇ ਕਿਸੇ ਵੀ ਥਾਂ ਚਲਾਉਣਾ ਅਮਲੀ ਕੀਤਾ। ਅਗਲਾ ਚੈਲੰਜ ਜਲਦੀ ਹੀ ਆ ਗਿਆ: ਟੀਮਾਂ ਇੱਕ ਕੰਟੇਨਰ ਇੱਕ ਲੈਪਟਾਪ 'ਤੇ ਨਹੀਂ ਚਲਾਉਂਦੀਆਂ—ਉਹ ਦਸਾਂ (ਫਿਰ ਸੌਂ) ਕੰਟੇਨਰਾਂ ਨੂੰ ਕਈ ਮਸ਼ੀਨਾਂ 'ਤੇ ਚਲਾਉਂਦੀਆਂ ਹਨ, ਅਤੇ ਵਰਜ਼ਨਾਂ ਭੀ ਲਗਾਤਾਰ ਬਦਲ ਰਹੀਆਂ ਹੁੰਦੀਆਂ ਹਨ।

ਉਸ ਸਮੇਂ "ਕੰਟੇਨਰ ਸ਼ੁਰੂ ਕਰਨਾ" ਮੁਸ਼ਕਲ ਹਿੱਸਾ ਰਹਿਣਾ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦਾ ਹੈ ਫਲੀਟ ਦਾ ਪ੍ਰਬੰਧ: ਕਿਹੜੇ ਕੰਟੇਨਰ ਕਿਸ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਣ, ਚੱਲ ਰਹੇ ਨਕਲਾਂ ਦੀ ਗਿਣਤੀ ਰੱਖਣਾ, ਅਤੇ ਜਦ ਕੁਝ ਫੇਲ ਹੋਵੇ ਤਾਂ ਖੁਦਕਾਰ ਢੰਗ ਨਾਲ ਬਹਾਲ ਕਰਨਾ।

ਔਰਕੇਸਟਰਜ਼ ਕਿਉਂ ਆਏ

ਜਦ ਤੁਹਾਡੇ ਕੋਲ ਕਈ ਕੰਟੇਨਰ ਕਈ ਸਰਵਰਾਂ 'ਤੇ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਕ ਐਸਾ ਸਿਸਟਮ ਚਾਹੀਦਾ ਹੈ ਜੋ ਉਹਨਾਂ ਨੂੰ ਕੋਆਰਡੀਨੇਟ ਕਰੇ। ਇਹੀ ਕੰਟੇਨਰ ਔਰਕੇਸਟਰ ਕਰਦੇ ਹਨ: ਉਹ ਤੁਹਾਡੇ ਬੁਨਿਆਦੀ ਸਾਧਨਾਂ ਨੂੰ ਇੱਕ ਪੂਲ ਵਜੋਂ ਦੇਖਦੇ ਹਨ ਅਤੇ ਲਗਾਤਾਰ ਕੰਮ ਕਰਦੇ ਹਨ ਤਾਂ ਕਿ ਤੁਹਾਡੀਆਂ ਐਪਲਿਕੇਸ਼ਨਾਂ ਦੀ ਚਾਹੀਦੀ ਸਥਿਤੀ ਕਾਇਮ ਰਹੇ।

Kubernetes ਇਸ ਲੋੜ ਲਈ ਸਭ ਤੋਂ ਵਿਆਪਕ ਉੱਤਰ ਬਣ ਗਿਆ (ਹਾਲਾਂਕਿ ਇਹ ਇਕੱਲਾ ਵਿਕਲਪ ਨਹੀਂ)। ਇਹ ਕੁਝ ਝੰਡੇ ਤੇ APIs ਦਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ 'ਤੇ ਬਹੁਤ ਸਾਰੀਆਂ ਟੀਮਾਂ ਅਤੇ ਪਲੇਟਫਾਰਮ ਨੇ ਮਿਆਰੀਕਰਨ ਕੀਤਾ।

Docker vs. ਔਰਕੇਸਟਰਸ਼ਨ: ਵੱਖ-ਵੱਖ ਕੰਮ

ਜ਼ਾਹਿਰ ਹੈ ਕਿ ਰੁਜ਼ਾਨਾ ਕੰਮ ਵੱਖ ਵੱਖ ਹੈ:

  • Docker (ਅਤੇ ਸਮਾਨ ਟੂਲ) ਇੱਕ ਸਿੰਘ-ਮਸ਼ੀਨ 'ਤੇ ਕੰਟੇਨਰ ਇਮੇਜ ਬਣਾਉਣ ਅਤੇ ਚਲਾਉਣ 'ਤੇ ਧਿਆਨ ਦਿੰਦਾ ਹੈ।
  • Kubernetes ਅਨੇਕ ਮਸ਼ੀਨਾਂ 'ਤੇ ਕੰਟੇਨਰ ਚਲਾਉਣ, ਉਨ੍ਹਾਂ ਨੂੰ ਸਕੇਲ ਕਰਨ ਅਤੇ ਰੋਲਿੰਗ ਅੱਪਡੇਟਸ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ 'ਤੇ ਧਿਆਨ ਦਿੰਦਾ ਹੈ।

Kubernetes ਨੇ ਜੋ ਮੁੱਖ ਸਮਰੱਥਾਵਾਂ ਲਿਆਂਦੀਆਂ

Kubernetes ਨੇ ਕੁਝ ਅਮਲਿਕ ਸਮਰੱਥਾਵਾਂ ਦਰਸਾਈਆਂ ਜੋ ਟੀਮਾਂ ਨੂੰ ਲੋੜੀਂਦੀਆਂ ਲੱਗੀਆਂ ਜਦ ਕੰਟੇਨਰ ਇੱਕ ਹੋਸਟ ਤੋਂ ਆਗੇ ਵੱਧ ਗਏ:

  • Scheduling: ਉਪਯੁਕਤ ਮਸ਼ੀਨਾਂ 'ਤੇ ਕੰਟੇਨਰ ਰੱਖਣਾ ਜੋ CPU/ਮੈਮੋਰੀ ਤੇ ਸੀਮਾਵਾਂ ਦੇ ਅਨੁਸਾਰ ਹੈ
  • Scaling: ਮੰਗ ਦੇ ਅਨੁਸਾਰ ਚੱਲ ਰਹੀਆਂ ਨਕਲਾਂ ਦੀ ਗਿਣਤੀ ਵਧਾਉਣਾ ਜਾਂ ਘਟਾਉਣਾ
  • Service discovery ਅਤੇ load balancing: IPs ਅਤੇ ਇੰਸਟੈਂਸ ਬਦਲ ਰਹੇ ਹੋਣ 'ਤੇ ਵੀ ਕੰਟੇਨਰਾਂ ਲਈ ਮਜ਼ਬੂਤ ਤਰੀਕੇ
  • Self-healing: ਸੈਮੀ-ਹਾਰਡਵੇਅਰ ਫੇਲ ਹੋਣ 'ਤੇ ਕਰੈਸ਼ ਕੀਤੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਰੀਸਟਾਰਟ/ਬਦਲਣਾ ਅਤੇ ਕੰਮ ਨੂੰ ਦੁਬਾਰਾ ਨਿਰਧਾਰਿਤ ਕਰਨਾ

ਸੰਖੇਪ ਵਿੱਚ, Docker ਨੇ ਯੂਨਿਟ ਨੂੰ ਪੋਰਟੇਬਲ ਬਣਾਇਆ; Kubernetes ਨੇ ਉਸਨੂੰ ਕਈ ਯੂਨਿਟਾਂ ਦੇ ਹਲੇ-ਚਲੇ 'ਤੇ ਓਪਰੇਬਲ—ਭਰੋਸੇਯੋਗ ਅਤੇ ਲਗਾਤਾਰ—ਬਣਾ ਦਿੱਤਾ।

ਕੰਟੇਨਰਾਂ ਨੇ ਐਪ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਕਿਵੇਂ ਬਦਲਦਾ ਦਿੱਤਾ

ਕੰਟੇਨਰਾਂ ਨੇ ਸਿਰਫ਼ ਡਿਪਲਾਇਮੈਂਟ ਦਾ ਤਰੀਕਾ ਨਹੀਂ ਬਦਲਿਆ—ਉਹਨਾਂ ਨੇ ਟੀਮਾਂ ਨੂੰ ਵੀ ਸੌਫਟਵੇਅਰ ਡਿਜ਼ਾਈਨ ਕਰਣ ਲਈ ਪ੍ਰੇਰਿਤ ਕੀਤਾ।

“Microservices ਬਣਾਉਣਾ ਆਸਾਨ ਹੋ ਗਿਆ” (ਪਰ ਮੋਨੋਲੀਥ ਨੂੰ ਮਨਾਂਹ ਨਹੀਂ)

ਕੰਟੇਨਰਾਂ ਤੋਂ ਪਹਿਲਾਂ, ਐਪ ਨੂੰ ਛੋਟੇ-ਛੋਟੇ ਸੇروਸਾਂ 'ਚ ਵੰਡਣਾ ਅਕਸਰ ਚਿੰਤਾ ਵਧਾਉਂਦਾ ਸੀ: ਵੱਖਰੇ ਰਨਟਾਈਮ, ਟਕਰਾਉਂਦੇ ਡੀਪੈਂਡੈਂਸੀਜ਼, ਅਤੇ ਜਟਿਲ ਡਿਪਲਾਇਮੈਂਟ ਸਕ੍ਰਿਪਟ। ਕੰਟੇਨਰਾਂ ਨੇ ਇਹ ਘੰਟੀ ਘਟਾ ਦਿੱਤੀ। ਜੇ ਹਰ ਸੇਵਾ ਨੂੰ ਇੱਕ ਇਮੇਜ ਵਜੋਂ ਭੇਜਿਆ ਜਾਂਦਾ ਅਤੇ ਇੱਕੋ ਤਰੀਕੇ ਨਾਲ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਨਵੀਂ ਸੇਵਾ ਬਣਾਉਣਾ ਘੱਟ ਜੋਖਿਮ ਵਾਲਾ ਲੱਗਦਾ ਹੈ।

ਪਰ ਕਹਿਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕੰਟੇਨਰ ਮੋਨੋਲੀਥਾਂ ਲਈ ਵੀ ਚੰਗੇ ਹਨ। ਇੱਕ ਮੋਨੋਲੀਥ ਇੱਕ ਕੰਟੇਨਰ ਵਿੱਚ ਹੋਰ ਜ਼ਿਆਦਾ ਸਾਦਾ ਹੋ ਸਕਦਾ ਹੈ—ਇੱਕ ਡਿਪਲੋਏਬਲ ਯੂਨਿਟ, ਇੱਕ ਲੌਗ ਸੈੱਟ, ਇੱਕ ਸਕੇਲਿੰਗ ਲੀਵਰ। ਕੰਟੇਨਰ ਕਿਸੇ ਵੀ ਸਟਾਈਲ ਨੂੰ ਮਜ਼ਬੂਤ ਬਣਾਉਂਦੇ ਹਨ—ਜੋ ਸਟਾਈਲ ਢੰਗ ਨਾਲ ਫਾਇਦਾ ਦਿੰਦੀ ਹੈ, ਉਸੇ ਨੂੰ ਅਪਣਾਉ।

ਮਿਆਰੀ ਇੰਟਰਫੇਸ ਆਮ ਹੋ ਗਏ

ਕੰਟੇਨਰ ਪਲੇਟਫਾਰਮਾਂ ਨੇ ਐਪ ਨੂੰ ਇਕ "ਬਲੈਕ ਬਾਕਸ" ਵਾਂਗ ਚੱਲਣ ਲਈ ਉਤਸ਼ਾਹਤ ਕੀਤਾ ਜਿਸਦੇ ਪ੍ਰਵੇਸ਼ ਅਤੇ ਨਿਕਾਸ ਪੇਸ਼ਗੀ ਪਤਾ ਹੋਵੇ। ਆਮ ਰੀਤੀ-ਰਿਵਾਜ ਸ਼ਾਮਿਲ ਹਨ:

  • ਪੋਰਟਸ: ਐਪ ਇੱਕ ਜਾਣੇ-ਪਹਚਾਣੇ ਪੋਰਟ 'ਤੇ ਸੁਣਦਾ ਹੈ ਅਤੇ ਪਲੇਟਫਾਰਮ ਟ੍ਰੈਫਿਕ ਰੂਟ ਕਰਦਾ ਹੈ।
  • Environment variables: ਕੰਫਿਗ ਨੂੰ ਰਨਟਾਈਮ 'ਤੇ ਇੰਜੈਕਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਕੋਡ ਵਿੱਚ ਨਹੀਂ ਬੇਕ ਕੀਤਾ ਜਾਂਦਾ।
  • Volumes: ਸਥਾਈ ਡੇਟਾ ਨੂੰ ਮਾਊਂਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਸ ਨਾਲ ਕੰਟੇਨਰ ਨੂੰ ਬਦਲਣਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।

ਇਹ ਇੰਟਰਫੇਸ ਵਰਜ਼ਨਾਂ ਨੂੰ ਬਦਲਣਾ, ਰੋਲਬੈਕ ਨੂੰ ਆਸਾਨ ਕਰਨਾ, ਅਤੇ ਲੈਪਟਾਪ/CI/ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਇੱਕੋ ਐਪ ਚਲਾਉਣਾ ਆਸਾਨ ਬਣਾਉਂਦੇ ਹਨ।

ਨਵੇਂ ਪੈਟਰਨ (ਅਤੇ ਨਵੇਂ ਫਰੇਬੇ)

ਕੰਟੇਨਰਾਂ ਨੇ ਦੁਹਰਾਏ ਜਾ ਸਕਣ ਵਾਲੇ ਇਮੈਨਿੰਗ ਬਲਾਕ—ਜਿਵੇਂ sidecars (ਮੁੱਖ ਐਪ ਦੇ ਨਾਲ ਲਗਦਾ ਸਹਾਇਕ ਕੰਟੇਨਰ ਲੌਗਿੰਗ, ਪ੍ਰਾਕਸੀ, ਜਾਂ ਸਰਟੀਫਿਕੇਟ ਲਈ)—ਪ੍ਰਸਿੱਧ ਕੀਤਾ। ਉਹ "ਇੱਕ ਪ੍ਰੋਸੈਸ ਪ੍ਰਤੀ ਕੰਟੇਨਰ" ਨਿਯਮ ਨੂੰ ਵੀ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹਨ—ਕਠੋਰ ਨਿਯਮ ਨਹੀਂ, ਪਰ ਸਾਫ਼-ਸੁਥਰਾ default ਜੋ ਸਕੇਲ ਅਤੇ ਟ੍ਰਬਲਸ਼ੂਟਿੰਗ ਲਈ ਮਦਦ ਕਰਦਾ ਹੈ।

ਮੁੱਖ ਜਾਲ ਇਹ ਹੈ ਕਿ ਜਿਆਦਾ ਵਿਭਾਜਨ ਨਾ ਕਰੋ। ਸਿਰਫ ਇਸ ਲਈ ਕਿ ਤੁਸੀਂ ਹਰ ਚੀਜ਼ ਨੂੰ ਇੱਕ ਸੇਵਾ ਵਿੱਚ ਤਬਦੀਲ ਕਰ ਸਕਦੇ ਹੋ, ਇਹ ਲਾਜ਼ਮੀ ਨਹੀਂ ਕਿ ਤੁਸੀਂ ਕਰੋ। ਜੇ ਇੱਕ "ਮਾਈਕ੍ਰੋਸਰਵਿਸ" ਜ਼ਿਆਦਾ ਕੋਆਰਡੀਨੇਸ਼ਨ, ਲੇਟੰਸੀ ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਓਵਰਹੈੱਡ ਲਿਆਉਂਦੀ ਹੈ, ਤਾਂ ਜਦ ਤੱਕ ਸਪਸ਼ਟ ਬਾਊਂਡਰੀ (ਵੱਖਰਾ ਸਕੇਲਿੰਗ, ਮਾਲਕੀਅਤ, ਜਾਂ ਨੁਕਸਾਨ ਵੱਖਰਾ ਕਰਨ) ਨਾ ਹੋਵੇ, ਇਸਨੂੰ ਇਕੱਠਾ ਰੱਖੋ।

ਸੁਰੱਖਿਆ ਅਤੇ ਭਰੋਸਾ: ਉਹ ਜੋ ਕੰਟੇਨਰ ਆਪਣੇ ਆਪ ਹੱਲ ਨਹੀਂ ਕਰਦੇ

ਕੰਟੇਨਰ ਸੌਫਟਵੇਅਰ ਨੂੰ ਭੇਜਣਾ ਆਸਾਨ ਬਣਾਉਂਦੇ ਹਨ, ਪਰ ਉਹ ਇਸਨੂੰ ਆਪਣੇ ਆਪ ਮਹਫੂਜ਼ ਨਹੀਂ ਬਣਾਉਂਦੇ। ਇੱਕ ਕੰਟੇਨਰ ਅਜੇ ਵੀ ਸਿਰਫ਼ ਕੋਡ ਅਤੇ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਹੈ, ਅਤੇ ਇਹ ਗਲਤ ਕਨਫਿਗਰ ਕੀਤਾ, outdated, ਜਾਂ ਖ਼ਿਲਾਵਤੀ ਹੋ ਸਕਦਾ ਹੈ—ਖਾਸ ਕਰਕੇ ਜਦ ਇਮੇਜਾਂ ਇੰਟਰਨੈੱਟ ਤੋਂ ਘੱਟ ਜਾਂਚ ਨਾਲ ਪੂਲ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।

ਭਰੋਸਾ ਇਮੇਜ ਪ੍ਰੋਵੇਨੰਸ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ

ਜੇ ਤੁਸੀਂ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦੇ "ਇਹ ਇਮੇਜ ਕਿੱਥੋਂ ਆਇਆ?" ਤਾਂ ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਜੋਖਮ ਲੈ ਰਹੇ ਹੋ। ਟੀਮਾਂ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਸਪਸ਼ਟ ਚੇਨ ਆਫ ਕਸਟਡੀ ਵੱਲ ਵਧਦੀਆਂ ਹਨ: CI ਵਿੱਚ ਇਮੇਜ ਬਣਾਓ, ਜੋ ਬਣਿਆ ਉਸਦੀ ਸਾਇਨ ਜਾਂ attestation ਕਰੋ, ਅਤੇ ਰਿਕਾਰਡ ਰੱਖੋ ਕਿ ਇਮੇਜ ਵਿੱਚ ਕੀ ਸੀ (ਡੀਪੈਂਡੈਂਸੀ, ਬੇਸ ਇਮੇਜ ਵਰਜ਼ਨ, ਬਿਲਡ ਕਦਮ)।

ਇੱਥੇ SBOMs (Software Bills of Materials) ਮਦਦਗਾਰ ਹੁੰਦੇ ਹਨ: ਉਹ ਤੁਹਾਡੇ ਕੰਟੇਨਰ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਦਿੱਖਣਯੋਗ ਅਤੇ ਆਡੀਟ ਕਰਨ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ।

ਸਕੈਨਿੰਗ ਅਗਲਾ ਪ੍ਰਯੋਗਿਕ ਕਦਮ ਹੈ। ਨਿਯਮਤ ਢੰਗ ਨਾਲ ਇਮੇਜਾਂ ਨੂੰ ਵਲਨਰੇਬਿਲਿਟੀ ਲਈ ਸਕੈਨ ਕਰੋ, ਪਰ ਨਤੀਜਿਆਂ ਨੂੰ ਫੈਸਲੇ ਲਈ ਇਨਪੁਟ ਵਜੋਂ ਮੰਨੋ—ਇਹ ਸੁਰੱਖਿਆ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ।

ਘੱਟ-ਅਧਿਕਾਰ ਅਤੇ ਸੈਕ੍ਰੇਟਸ: ਆਮ ਕਿਲੋਹੇ

ਇੱਕ ਆਮ ਗਲਤੀ ਕੰਟੇਨਰਾਂ ਨੂੰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਅਧਿਕਾਰ ਦੇ ਕੇ ਚਲਾਉਣਾ ਹੈ—ਡਿਫਾਲਟ root ਯੂਜ਼ਰ, ਵੱਧ Linux capabilities, ਹੋਸਟ ਨੈੱਟਵਰਕਿੰਗ, ਜਾਂ privileged ਮੋਡ "ਕਰਕੇ ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ"। ਇਹਨਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਗਲਤੀ ਹੋਣ 'ਤੇ ਬਲਾਸਟ ਰੇਡੀਅਸ ਵਧਾ ਦਿੰਦਾ ਹੈ।

ਸੈਕ੍ਰੇਟਸ ਇਕ ਹੋਰ ਫਸਾਅ ਹਨ। Environment variables, ਬੇਕ ਕੀਤੀਆਂ config ਫਾਈਲਾਂ, ਜਾਂ committed .env ਫਾਈਲਾਂ credentials ਲੀਕ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਪ੍ਰੇਫਰ ਕਰੋ ਕਿ ਸੈਕ੍ਰੇਟ ਸਟੋਰ ਜਾਂ ਔਰਕੇਸਟਰ ਦੀਆਂ ਮੈਨੇਜ ਕੀਤੀਆਂ ਸੇਕ੍ਰੇਟਸ ਵਰਤੋ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਘੁੰਮਾਉਂਦਾ ਸਮਝੋ ਜਿਵੇਂ ਕਿ ਪ੍ਰਕਟ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ।

ਰਨਟਾਈਮ ਜੋਖਮ ਜੋ ਲੋਕ ਅਣਦੇਖ ਕਰਦੇ ਹਨ

"ਸਾਫ" ਇਮੇਜ ਵੀ ਰਨਟਾਈਮ 'ਚ ਖਤਰਨਾਕ ਹੋ ਸਕਦੇ ਹਨ। Docker sockets ਨੂੰ ਐਕਸਪੋਜ਼ ਕਰਨਾ, ਬਹੁਤ ਖੁੱਲੇ ਵਾਲਿਊਮ ਮਾਊਂਟ, ਅਤੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਅੰਦਰੂਨੀ ਸੇਵਾਵਾਂ ਤਕ ਪਹੁੰਚ ਦੇਣਾ ਜਿਹੜੀ ਦੀ ਲੋੜ ਨਹੀਂ—ਇਹ ਸਭ ਜੋਖਮ ਵਧਾਉਂਦੇ ਹਨ।

ਇਸਦੇ ਨਾਲ ਯਾਦ ਰੱਖੋ: ਹੋਸਟ ਅਤੇ kernel ਨੂੰ ਪੈਚ ਰੱਖਣਾ ਵੀ ਜ਼ਰੂਰੀ ਹੈ—ਕੰਟੇਨਰ kernel ਸਾਂਝਾ ਕਰਦੇ ਹਨ।

ਇੱਕ ਸਧਾਰਨ ਚੈਕਲਿਸਟ ਮਾਨਸਿਕਤਾ

ਚਾਰ ਫੇਜ਼ਾਂ 'ਚ ਸੋਚੋ:

  • Build: ਨਿਯੰਤਰਿਤ ਬਿਲਡ, SBOMs, ਸਕੈਨ, ਬੇਸ ਇਮੇਜ ਘਟਾਓ
  • Store: ਪਰਾਈਵੇਟ ਰਜਿਸਟਰੀਜ਼, ਐਕਸੈਸ ਕੰਟਰੋਲ, ਅਿਮਿਊਟੇਬਿਲਿਟੀ ਨੀਤੀਆਂ
  • Run: ਘੱਟ-ਅਧਿਕਾਰ, ਨੈੱਟਵਰਕ ਸੀਮਤਾਂ, ਸਰੋਤ ਸੀਮਤਾਂ, ਸੈਕ੍ਰੇਟ ਸਪ੍ਰੈਲ ਨਾ ਹੋਵੇ
  • Monitor: ਲੌਗ, ਅਲਰਟ, ਅਸમાનਯਤਾ ਪਤਾ ਲਗਾਉਣ, ਤੇਜ਼ੀ ਨਾਲ ਰੀਬਿਲਡ-ਅਤੇ-ਰੀਡਿਪਲੋਏ

ਕੰਟੇਨਰ friction ਘਟਾਉਂਦੇ ਹਨ—ਪਰ ਭਰੋਸਾ ਫਿਰ ਵੀ ਕਮਾਇਆ, ਜਾਂਚਿਆ, ਅਤੇ ਲਗਾਤਾਰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਪੈਂਦਾ ਹੈ।

ਆਮ ਗਲਤੀਆਂ ਅਤੇ ਉਹਨਾਂ ਤੋਂ ਕਿਵੇਂ ਬਚਣਾ

ਆਪਣਾ ਡਿਲਿਵਰੀ ਫਲੋ ਪਹਿਲਾਂ ਡਿਜ਼ਾਈਨ ਕਰੋ
ਪਲੇਨਿੰਗ ਮੋਡ ਨਾਲ ਸੇਵਾਵਾਂ, ਵਾਤਾਵਰਣ ਅਤੇ ਰਿਲੀਜ਼ਾਂ ਨੂੰ ਪਹਿਲਾਂ ਰੂਪਾਂਕਿਤ ਕਰੋ।
ਪਹਿਲਾਂ ਯੋਜਨਾ ਬਣਾਓ

Docker ਪੈਕੇਜਿੰਗ ਨੂੰ ਦੁਹਰਾਏਜੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਪਰ ਸਿਰਫ਼ ਇੱਥੇ ਹੀ ਅਨੁਸ਼ਾਸਨ ਹੋਵੇ ਤਾਂ। ਕਈ ਟੀਮਾਂ ਇੱਕੋ ਹੀ ਗੜਬੜੀਆਂ 'ਚ ਫਸਦੀਆਂ ਹਨ—ਫਿਰ "ਕੰਟੇਨਰ" 'ਤੇ ਦੋਸ਼ ਲਾਉਂਦੀਆਂ ਹਨ ਜਦ ਇਹ ਵਰਕਫਲੋ ਸਮੱਸਿਆਵਾਂ ਹੁੰਦੀਆਂ ਹਨ।

ਉਹ ਐਂਟੀ-ਪੈਟਰਨ ਜੋ ਹਰ ਕਿਸੇ ਨੂੰ ਧੀਮਾ ਕਰਦੇ ਹਨ

ਇੱਕ ਧਾਰਨਾ ਵੱਡੀਆਂ ਬਿਹੱਦ ਭਾਰੀ ਇਮੇਜਾਂ ਬਣਾਉਣਾ ਹੈ: ਪੂਰੇ OS ਬੇਸ ਇਮੇਜ, runtime build ਟੂਲ ਜੋ runtime 'ਚ ਲੋੜੀਂਦੇ ਨਹੀਂ, ਅਤੇ ਪੂਰੇ ਰੇਪੋ (ਟੈਸਟ, ਡੌਕਸ, node_modules) ਦੀ ਕਾਪੀ। ਨਤੀਜਾ: ਹੌਲੀ ਡਾਊਨਲੋਡ, ਹੌਲੀ CI, ਅਤੇ ਸੁਰੱਖਿਆ ਲਈ ਵੱਧ ਸਤਹ।

ਹੋਰ ਇੱਕ ਆਮ ਮੁੱਦਾ ਧੀਮੇ, cache-busting ਬਿਲਡਸ ਹਨ। ਜੇ ਤੁਸੀਂ ਸਾਰੇ ਸੋਰਸ ਟ੍ਰੀ ਨੂੰ dependencies ਇੰਸਟਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕਾਪੀ ਕਰਦੇ ਹੋ, ਤਾਂ ਹਰ ਛੋਟੇ ਕੋਡ ਬਦਲਾਅ ਤੇ ਪੂਰੀ dependency reinstall ਹੋਣੀ ਪੈਂਦੀ ਹੈ।

ਅਖੀਰਕਾਰ, ਟੀਮਾਂ ਅਕਸਰ ਅਸਪਸ਼ਟ ਜਾਂ ਤਰਲ ਟੈਗ ਵਰਗੇ latest ਜਾਂ prod ਵਰਤਦੀਆਂ ਹਨ। ਇਹ ਰੋਲਬੈਕ ਨੂੰ ਮੁਸ਼ਕਿਲ ਬਣਾਉਂਦਾ ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਨੂੰ ਅਨਿਸ਼্চਿਤ ਕਰ ਦਿੰਦਾ ਹੈ।

"ਲੋਕਲ ਤੇ ਚੱਲਦਾ ਹੈ ਪਰ ਪ੍ਰੋਡ 'ਚ ਨਹੀਂ": ਅਸਲ ਕਾਰਨ

ਅਕਸਰ ਇਹ ਫਰਕ ਕੰਫਿਗਰੇਸ਼ਨ (ਗੁੰਮ env vars ਜਾਂ ਸੈਕ੍ਰੇਟਸ), ਨੈੱਟਵਰਕਿੰਗ (ਵੱਖਰੇ ਹੋਸਟਨੇਮ, ਪੋਰਟ, ਪ੍ਰੌਕਸੀ, DNS), ਜਾਂ ਸਟੋਰੇਜ (ਡੇਟਾ ਕੰਟੇਨਰ ਫਾਇਲਸਿਸਟਮ 'ਤੇ ਲਿਖਿਆ ਗਿਆ ਬਜਾਏ ਵੋਲਿਊਮ 'ਤੇ ਨਹੀਂ, ਜਾਂ ਫਾਇਲ ਪਰਮਿਸ਼ਨਾਂ) ਨਾਲ ਹੁੰਦਾ ਹੈ।

ਅੱਜ ਹੀ ਲਾਗੂ ਕਰਨ ਯੋਗ ਪ੍ਰਾਇਕਟਿਕ ਸੁਧਾਰ

  • ਸੰਭਵ ਹੋਵੇ ਤਾਂ slim base images ਵਰਤੋ (ਜਾਂ distroless ਜੇ ਟੀਮ ਤਿਆਰ ਹੋ)
  • ਬੇਸ ਇਮੇਜ ਅਤੇ ਮੁੱਖ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਲਈ ਵਰਜਨ ਪਿਨ ਕਰੋ ਤਾਂ ਕਿ ਬਿਲਡ ਦੁਹਰਾਏਜੋਗ ਰਹਿਣ
  • ਇੱਕ .dockerignore ਜਲਦੀ ਸ਼ਾਮਿਲ ਕਰੋ
  • multi-stage builds ਅਪਣਾਓ ਤਾਂ ਕਿ ਕਮਪਾਇਲਰ ਅਤੇ ਬਿਲਡ ਟੂਲ runtime ਇਮੇਜ ਵਿੱਚ ਨਾ ਆਵਨ:
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
CMD ["node","dist/server.js"]
  • ਇਮੇਜਾਂ ਨੂੰ git SHA ਵਰਗੇ traceable ਟੈਗ ਨਾਲ ਟੈਗ ਕਰੋ (ਅਤੇ ਚਾਹੇ ਤਾਂ ਇੱਕ ਮਨੁੱਖ-ਮਿੱਤਰ ਰਿਲੀਜ਼ ਟੈਗ ਵੀ)

ਕਦੋਂ ਕੰਟੇਨਰ ਨਹੀਂ ਵਰਤਣੇ

ਜੇ ਐਪ ਬਹੁਤ ਸਧਾਰਨ ਹੈ (ਇੱਕ ਸਿੰਗਲ ਸਟੈਟਿਕ ਬਾਇਨਰੀ, ਬਰਸਤਾ ਹੀ ਸ਼ร้าน, ਕੋਈ ਸਕੇਲਿੰਗ ਜ਼ਰੂਰਤ ਨਹੀਂ), ਤਾਂ ਕੰਟੇਨਰ ਜੋੜਨਾ ਬੇਕਾਰ ਓਵਰਹੈਡ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ। ਲੇਗੇਸੀ ਸਿਸਟਮ ਜਿਹੜੇ OS coupling ਜਾਂ ਵਿਸ਼ੇਸ਼ ਹਾਰਡਵੇਅਰ ਡਰਾਈਵਰਾਂ 'ਤੇ ਨਿਰਭਰ ਹਨ ਵੀ ਬੁਰੇ ਫਿੱਟ ਹੋ ਸਕਦੇ ਹਨ—ਕਈ ਵਾਰੀ VM ਜਾਂ managed service ਸਾਫ਼-ਸੁਥਰਾ ਚੋਣ ਹੁੰਦੀ ਹੈ।

ਅੱਜ "ਡਿਫਾਲਟ ਯੂਨਿਟ" ਦਾ ਕੀ ਅਰਥ ਹੈ—ਅਤੇ ਅਗਲੇ ਕਦਮ

ਕੰਟੇਨਰ ਡਿਫਾਲਟ ਯੂਨਿਟ ਬਣ ਗਏ ਕਿਉਂਕਿ ਉਹ ਇੱਕ ਬਹੁਤ ਵਿਸ਼ੇਸ਼, ਦੁਹਰਾਏਜੋਗ ਦਰਦ ਨੂੰ ਹੱਲ ਕਰਦੇ ਹਨ: ਇੱਕੋ ਐਪ ਨੂੰ ਲੈਪਟਾਪ, ਟੈਸਟ ਸਰਵਰ, ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਇੱਕੋ ਤਰ੍ਹਾਂ ਚਲਾਉਣ। ਐਪ ਅਤੇ ਉਸ ਦੀਆਂ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਨੂੰ ਇਕੱਠੇ ਪੈਕੇਜ ਕਰਨਾ ਡਿਪਲਾਇਮੈਂਟ ਤੇਜ਼, ਰੋਲਬੈਕ ਸੁਰੱਖਿਅਤ, ਅਤੇ ਟੀਮਾਂ ਵਿਚ ਹੱਥ-ਬਦਲ ਘੱਟ ਕਰਦਾ ਹੈ।

ਉਤਨਾ ਹੀ ਮਹੱਤਵਪੂਰਨ, ਕੰਟੇਨਰ ਨੇ ਵਰਕਫਲੋ ਨੂੰ ਸਟੈਂਡਰਡ ਕੀਤਾ: ਇੱਕ ਵਾਰੀ ਬਣਾਓ, ਭੇਜੋ, ਚਲਾਓ।

"ਡਿਫਾਲਟ" ਅਮਲ ਵਿੱਚ ਕੀ ਮਤਲਬ ਰੱਖਦਾ ਹੈ

"ਡਿਫਾਲਟ" ਇਹ ਨਹੀਂ ਕਿ ਹਰ ਥਾਂ Docker ਚੱਲਦਾ ਹੈ। ਇਹ ਮਤਲਬ ਹੈ ਕਿ ਆਧੁਨਿਕ ਡਿਲਿਵਰੀ ਪਾਈਪਲਾਈਨਾਂ ਆਮ ਤੌਰ 'ਤੇ ਕੰਟੇਨਰ ਇਮੇਜ ਨੂੰ ਮੁੱਖ ਆਰਟੀਫੈਕਟ ਮੰਨਦੇ ਹਨ—ਇੱਕ ZIP ਫਾਇਲ, VM ਸਨੈਪਸ਼ਾਟ, ਜਾਂ ਹੱਥ-ਲਿਖੇ ਸੈਟਅਪ ਕਦਮਾਂ ਦੀ ਬਜਾਏ।

ਇਹ ਡਿਫਾਲਟ ਆਮ ਤੌਰ 'ਤੇ ਤਿੰਨ ਚੀਜ਼ਾਂ ਦੇ ਕਾਮਬਿਨੇਸ਼ਨ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ:

  • Images: immutable ਬਿਲਡ ਆਉਟਪੁੱਟ ਜੋ ਵਰਜ਼ਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ (ਅਤੇ ਆਦਰਸ਼ ਰੂਪ ਵਿੱਚ commit SHA)
  • Registries: ਇਮੇਜਾਂ ਨੂੰ ਸਟੋਰ ਅਤੇ ਰਿਕਵਰ ਕਰਨ ਲਈ ਸਾਂਝੀ ਥਾਂ (ਪ੍ਰਾਈਵੇਟ ਜਾਂ ਪਬਲਿਕ), ਟੀਮਾਂ ਨੂੰ ਇੱਕੋ ਆਰਟੀਫੈਕਟ ਵੱਖ-ਵੱਖ ਵਾਤਾਵਰਣਾਂ 'ਚ ਵਰਤਣ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ
  • Orchestration: ਇੱਕ scheduler (ਅਕਸਰ Kubernetes) ਜੋ ਕੰਟੇਨਰਾਂ ਨੂੰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਚਲਾਉਂਦਾ, ਫੇਲਯਰ ਸਥਿਤੀਆਂ ਵਿੱਚ ਬਹਾਲ ਕਰਦਾ, ਅਤੇ ਸਕੇਲ ਕਰਦਾ

ਇਸ ਹਫ਼ਤੇ ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ

ਛੋਟੇ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਦੁਹਰਾਏਜੋਗ 'ਤੇ ਧਿਆਨ ਦਿਓ।

  1. Dockerfile ਬੁਨਿਆਦੀਆਂ ਸਿੱਖੋ: ਇਮੇਜਾਂ ਨੂਮੀਨਿਮਲ ਰੱਖੋ, ਬੇਸ ਇਮੇਜ ਵਰਜ਼ਨ ਪਿਨ ਕਰੋ, ਅਤੇ ਲੇਅਰਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਓ ਕਿ ਰੀਬਿਲਡ ਤੇਜ਼ ਹੋਵੇ। ਜਲਦੀ .dockerignore ਸ਼ਾਮਿਲ ਕਰੋ।
  2. ਇਕ ਰਜਿਸਟਰੀ ਨਿਰਧਾਰਿਤ ਢੰਗ ਨਾਲ ਵਰਤੋ: ਇਮੇਜਾਂ ਨੂੰ ਮਾਇਨਫਿੰਗ ਕੁਨੀਆਂ ਨਾਲ (ਉਦਾਹਰਨ 1.4.2, main, sha-…) ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ ਅਤੇ ਪੂਸ਼/ਪੂਲ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ।
  3. CI ਬਿਲਡ ਨਿਯਮ ਅਪਣਾਓ: CI ਵਿੱਚ ਇਮੇਜ ਬਣਾਓ, ਇਮੇਜ ਸੰਦਰਭ ਵਿੱਚ ਟੈਸਟ ਚਲਾਓ, ਅਤੇ ਉਸੇ ਇਮੇਜ ਨੂੰ dev → staging → production ਤੱਕ ਪ੍ਰੋਮੋਟ ਕਰੋ (ਪਰ ਹਰ ਵਾਤਾਵਰਣ ਲਈ ਦੁਬਾਰਾ ਬਣਾਉਣਾ ਨਹੀਂ)।

ਜੇ ਤੁਸੀਂ ਤੇਜ਼ ਵਿਕਾਸ ਤਰੀਕੇ (ਜਿਨ੍ਹਾਂ ਵਿੱਚ AI-ਸਹਾਇਤ ਤਰੀਕੇ ਸ਼ਾਮਿਲ ਹਨ) ਨਾਲ ਪ੍ਰਯੋਗ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਉਹੀ ਅਨੁਸ਼ਾਸਨ ਰੱਖੋ: ਇਮੇਜ ਨੂੰ ਵਰਜ਼ਨ ਕਰੋ, ਇਸਨੂੰ ਰਜਿਸਟਰੀ ਵਿੱਚ ਸਟੋਰ ਕਰੋ, ਅਤੇ ਡਿਪਲਾਇਮੈਂਟ ਨੂੰ ਇੱਕੋ ਆਰਟੀਫੈਕਟ ਅੱਗੇ ਵਧਾਉਣ ਲਈ ਪ੍ਰੋਮੋਟ ਕਰੋ। ਇਹ ਇੱਕ ਕਾਰਨ ਹੈ ਕਿ Koder.ai ਵਰਗੀਆਂ ਟੀਮਾਂ ਲਈ ਵੀ ਕੰਟੇਨਰ-ਪਹਿਲਾਂ ਡਿਲਿਵਰੀ ਲਾਭਦਾਇਕ ਹੈ—ਤੇਜ਼ ਇਟਰੇਸ਼ਨ ਚੰਗੀ ਹੈ, ਪਰ ਦੁਹਰਾਏਜੋਗੀ ਅਤੇ ਰੋਲਬੈਕ-ਤਿਆਰ ਰਿਲੀਜ਼ਾਂ ਹੀ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਬਣਾਉਂਦੀਆਂ ਹਨ।

ਸੰਤੁਲਿਤ ਨਜ਼ਰੀਆ ਰੱਖੋ

ਕੰਟੇਨਰ "ਮੇਰੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਦੀ ਸਮੱਸਿਆ ਘਟਾਉਂਦੇ ਹਨ, ਪਰ ਉਹ ਚੰਗੇ ਓਪਰੇਸ਼ਨਲ ਅਭਿਆਸ ਨੂੰ ਬਦਲ ਕੇ ਨਹੀਂ ਦਿੰਦੇ। ਤੁਹਾਨੂੰ ਹੇਠਾਂ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ ਦੀ ਲੋੜ ਅਜੇ ਵੀ ਹੈ: ਮਾਨੀਟਰਿੰਗ, ਇੰਸੀਡੈਂਟ ਰਿਸਪਾਂਸ, ਸੈਕ੍ਰੇਟ ਮੈਨੇਜਮੈਂਟ, ਪੈਚਿੰਗ, ਐਕਸੈਸ ਕੰਟਰੋਲ, ਅਤੇ ਸਾਫ਼ ਮਾਲਕੀਅਤ।

ਕੰਟੇਨਰਾਂ ਨੂੰ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਪੈਕੇਜਿੰਗ ਮਿਆਰ ਸਮਝੋ—ਇੰਜੀਨੀਅਰਿੰਗ ਅਨੁਸ਼ਾਸਨ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਇੱਕ شارਟਕਟ ਨਹੀਂ।

ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ

Who is Solomon Hykes, and what was his role in Docker’s rise?

Solomon Hykes ਇੱਕ ਇੰਜੀਨੀਅਰ ਹਨ ਜਿਨ੍ਹਾਂ ਨੇ OS-ਸਤਹ ਦੀ ਆਧਾਰਿਤ ਆਈਸੋਲੇਸ਼ਨ (ਕੰਟੇਨਰ) ਨੂੰ ਡਿਵੈਲਪਰ-ਮੈਲਜੂਜ਼ ਹੋਣ ਵਾਲੇ ਵਰਕਫਲੋ ਵਿੱਚ ਬਦਲਣ ਦਾ ਨੇਤ੍ਰਿਤਵ ਕੀਤਾ। 2013 ਵਿੱਚ ਇਹ ਕੰਮ ਇੱਕ ਖੁਲ੍ਹੇ ਪ੍ਰਾਜੈਕਟ ਵਜੋਂ Docker ਦੇ ਤੌਰ 'ਤੇ ਰਿਲੀਜ਼ ਹੋਇਆ, ਜਿਸ ਨਾਲ ਟੀਮਾਂ ਲਈ ਐਪ ਅਤੇ ਉਸ ਦੀਆਂ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਇੱਕ ਹੀ ਤਰੀਕੇ ਨਾਲ ਹਰ ਏਨਵਾਇਰਨਮੈਂਟ 'ਚ ਚਲਾਉਣਾ ਅਸਾਨ ਹੋ ਗਿਆ।

What’s the difference between Docker and containers?

ਕੰਟੇਨਰ ਨੀਂਹੀ ਸੰਕਲਪ ਹਨ: OS ਫੀਚਰਾਂ (ਜਿਵੇਂ Linux 'ਤੇ namespaces ਅਤੇ cgroups) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਈਸੋਲੇਟਡ ਪ੍ਰੋਸੈਸ। Docker ਉਹ ਟੂਲਿੰਗ ਅਤੇ ਰੀਤੀ-ਰਿਵਾਜ ਹੈ ਜਿਸ ਨੇ ਕੰਟੇਨਰਾਂ ਨੂੰ ਬਣਾਉਣਾ, ਚਲਾਉਣਾ ਅਤੇ ਸ਼ੇਅਰ ਕਰਨਾ ਆਸਾਨ ਕੀਤਾ (ਉਦਾਹਰਨ: Dockerfile → image → container). ਅੱਜ ਤੁਸੀਂ Docker ਦੇ ਬਿਨਾਂ ਵੀ ਕੰਟੇਨਰ ਵਰਤ ਸਕਦੇ ਹੋ, ਪਰ Docker ਨੇ ਇਹ ਵਰਕਫਲੋ ਪ੍ਰਸਿੱਧ ਕੀਤਾ।

What problem did Docker actually solve for teams?

ਇਸ ਨੇ "works on my machine" ਸਮੱਸਿਆ ਹੱਲ ਕੀਤੀ—ਐਪ ਕੋਡ ਅਤੇ ਉਮੀਦ ਕੀਤੀ ਡੀਪੈਂਡੈਂਸੀਜ਼ ਨੂੰ ਇੱਕ ਦੁਹਰਾਏਜੋਗ, ਪੋਰਟੇਬਲ ਯੂਨਿਟ ਵਿੱਚ ਬੰਨ੍ਹ ਕੇ। ZIP ਫਾਇਲ ਅਤੇ ਸੈਟਅਪ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਬਜਾਏ, ਟੀਮਾਂ ਇੱਕ ਕੰਟੇਨਰ ਇਮੇਜ ਡਿਪਲੋਏ ਕਰਦੀਆਂ ਹਨ ਜੋ ਲੈਪਟਾਪ, CI, ਸਟੇਜਿੰਗ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਚ ਇੱਕੋ ਤਰ੍ਹਾਂ ਚਲ ਸਕਦੀ ਹੈ।

What do Dockerfile, image, and container mean in plain terms?

Dockerfile ਇੱਕ ਬਿਲਡ ਨੁਸਖਾ ਹੈ।

ਇਮੇਜ ਬਣੀ ਹੋਈ ਆਰਟੀਫੈਕਟ ਹੈ (immutable snapshot) ਜੋ ਸਟੋਰ ਅਤੇ ਸਾਂਝਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।

ਕੰਟੇਨਰ ਉਸ ਇਮੇਜ ਦਾ ਚੱਲਦਾ ਹੋਇਆ ਉਦਾਹਰਣ ਹੈ (ਜੀਵਤ ਪ੍ਰੋਸੈਸ ਜਿਸਦੀ ਆਪਣੀ ਆਈਸੋਲੇਟਡ ਫਾਇਲਸਿਸਟਮ/ਸੈਟਿੰਗ ਹੁੰਦੀ ਹੈ)।

Why should I avoid the `latest` tag, and what should I use instead?

Avoid latest ਕਿਉਂਕਿ ਇਹ ਅਸਪਸ਼ਟ ਹੈ ਅਤੇ ਬਿਨਾਂ ਚੇਤਾਵਨੀ ਦੇ ਬਦਲ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਵਾਤਾਵਰਣਾਂ ਵਿਚ ਡ੍ਰਿਫਟ ਹੋ ਸਕਦਾ ਹੈ।

Behtar ਤਰੀਕੇ:

  • ਰਿਲੀਜ਼ ਲਈ ਸਪਸ਼ਟ ਵਰਜਨ ਟੈਗ ਵਰਤੋ (ਜਿਵੇਂ 1.4.2)
  • ਟ्रेਸਬਿਲਿਟੀ ਲਈ commit SHA ਨਾਲ ਵੀ ਟੈਗ ਕਰੋ
  • ਟੈਗਾਂ ਨੂੰ ਆਪਣੀ ਰਿਲੀਜ਼ ਪ੍ਰਕਿਰਿਆ ਦਾ ਹਿੱਸਾ ਬਣਾਓ, ਬਾਅਦ ਵਿੱਚ ਨਹੀਂ
What is a container registry, and when do I need a private one?

ਇੱਕ ਰਜਿਸਟਰੀ ਕੰਟੇਨਰ ਇਮੇਜ਼ਾਂ ਲਈ ਸਟੋਰ ਹੈ। ਸੰਖੇਪ ਵਰਕਫਲੋ:

  • Build: CI ਵਿੱਚ ਇਮੇਜ ਬਣਾਓ
  • Push: ਉਸ ਇਮੇਜ ਨੂੰ ਰਜਿਸਟਰੀ 'ਤੇ ਅੱਪਲੋਡ ਕਰੋ
  • Pull: ਸਟੇਜਿੰਗ/ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਉਹੀ ਇਮੇਜ ਡਾਊਨਲੋਡ ਕਰੋ

ਜਦੋਂ ਤੁਸੀਂ ਅੰਦਰੂਨੀ ਸੇਵਾਵਾਂ ਜਾਂ ਪ੍ਰਾਈਵੇਟ ਕੋਡ ਸਾਂਝਾ ਕਰਦੇ ਹੋ ਤਾਂ ਇੱਕ ਪਰਾਈਵੇਟ ਰਜਿਸਟਰੀ ਸਹੀ ਐਕਸੈਸ ਨਿਯੰਤਰਣ ਅਤੇ ਕੰਪਲਾਇੰਸ ਲਈ ਜ਼ਰੂਰੀ ਹੁੰਦੀ ਹੈ।

How are containers different from virtual machines in practice?

ਕੰਟੇਨਰ ਹੋਸਟ OS kernel ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਇਸ ਲਈ ਉਹ VM ਦੀ ਤਰ੍ਹਾਂ ਆਪਣਾ ਪੂਰਾ OS ਨਹੀਂ ਲੈਂਦੇ—ਇਸ ਕਾਰਨ ਉਹ ਹਲਕੇ ਤੇ ਤੇਜ਼ ਬੂਟ ਹੋ ਜਾਂਦੇ ਹਨ।

ਸਧਾਰਨ ਮਾਡਲ:

  • VM: ਆਪਣਾ OS ਸਮੇਤ (ਭਾਰੀ, ਧੀਮੀ ਬੂਟ)
  • ਕੰਟੇਨਰ: ਸਾਂਝੇ kernel 'ਤੇ ਆਈਸੋਲੇਟਡ ਪ੍ਰੋਸੈਸ (ਹਲਕੇ, ਤੇਜ਼ ਸਟਾਰਟ)

ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਸੀਮਾ: ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ Linux kernel 'ਤੇ Windows ਕੰਟੇਨਰ ਨਹੀਂ ਚਲਾ ਸਕਦੇ ਬਿਨਾਂ ਵਾਧੂ ਵਰਚੁਅਲਾਈਜ਼ੇਸ਼ਨ ਦੇ।

Why do containers fit CI/CD so well?

ਉਹ ਤੁਹਾਨੂੰ ਇੱਕੋ ਆਰਟੀਫੈਕਟ (ਇਮੇਜ) ਦਿੰਦੇ ਹਨ ਜਿਸਨੂੰ ਇੱਕ ਵਾਰੀ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਬਹੁਤ ਵਾਰ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।

ਆਮ CI/CD ਪੈਟਰਨ:

  • ਇੱਕ ਵਾਰੀ ਇਮੇਜ ਬਣਾਓ
  • ਉਸ ਇਮੇਜ 'ਤੇ ਟੈਸਟ ਚਲਾਓ
  • ਇਮੇਜ ਸਕੈਨ ਕਰੋ
  • ਇੱਕੋ ਇਮੇਜ ਨੂੰ ਵਾਤਾਵਰਣਾਂ ਵਿਚ ਪ੍ਰੋਮੋਟ ਕਰੋ

ਤੁਸੀਂ ਵਾਤਾਵਰਣ ਅਨੁਸਾਰ ਕੰਫਿਗ (env vars/ਸਕੈਂਡ) ਬਦਲਦੇ ਹੋ—ਆਪ artifact ਨਹੀਂ—ਇਸ ਨਾਲ ਡ੍ਰਿਫਟ ਘਟਦਾ ਹੈ ਅਤੇ ਰੋਲਬੈਕ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।

Why did Kubernetes become important after Docker?

Docker ਇਕ-ਮਸ਼ੀਨ 'ਤੇ ਕੰਟੇਨਰ ਚਲਾਉਣਾ ਆਸਾਨ ਕੀਤਾ। ਸਕੇਲ ਉੱਤੇ, ਤੁਹਾਨੂੰ ਲੋੜ ਹੁੰਦੀ ਹੈ:

  • scheduling (ਕਿਸ ਮਸ਼ੀਨ 'ਤੇ ਚਲਵੇ)
  • scaling (ਕਿੰਨੇ ਨਕਲ)
  • self-healing (ਜ਼ਰੂਰਤ 'ਤੇ ਰੀਸਟਾਰਟ/ਰਿਪਲੇਸ)
  • ਸਥਿਰ ਨੈੱਟਵਰਕਿੰਗ/ਸੇਵਾ-ਖੋਜ

Kubernetes ਇਹ ਸਭ ਸਮਰੱਥਾਵਾਂ ਦਿੰਦਾ ਹੈ ਤਾਂ ਕਿ ਕਈ ਮਸ਼ੀਨਾਂ 'ਤੇ ਕੰਟੇਨਰ ਫਲੀਟ ਨੂੰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਚਲਾਇਆ ਜਾ ਸਕੇ।

What security and reliability gaps do containers not solve automatically?

ਕੰਟੇਨਰ ਪੈਕੇਜਿੰਗ ਤੇ ਸਹੂਲਤ ਵਧਾਉਂਦੇ ਹਨ, ਪਰ ਉਹ ਆਪਣਾ ਆਪ ਸੁਰੱਖਿਆ ਨਹੀਂ ਦਿੰਦੇ। ਕੁਝ ਮੁੱਖ ਅੰਕ:

  • ਨਿਰਮਾਣ ਦੀ ਪਰਖ (ਪਤਾ ਕਰੋ ਕਿ ਇਮੇਜ ਕਿੱਥੋਂ ਆਇਆ) — controlled CI, sign/attest, SBOM
  • ਇਮੇਜਾਂ ਨੂੰ ਨਿਯਮਤ ਤੌਰ 'ਤੇ ਸਕੈਨ ਕਰੋ
  • ਘੱਟ ਅਧਿਕਾਰ ਨਾਲ ਚਲਾਓ (avoid privileged, ਘੱਟ capabilities, ਸੰਭਵ ਹੋਵੇ ਤਾਂ root ਨਾ ਚਲਾਉ)
  • ਰਾਜ-ਗੁਪਤ ਤੇ ਸੈਕ੍ਰੇਟ ਮੈਨੇਜਮੈਂਟ: ਸੇਕਰੇਟਸ ਨੂੰ ਇਮੇਜਾਂ ਜਾਂ ਰਿਪੋ ਵਿੱਚ ਨਾ ਰੱਖੋ; ਅਦਾਇਗੀ ਅਤੇ ਘੁੰਮਾਓ ਨੂੰ ਯਕੀਨੀ ਬਣਾਓ

ਰਾਹ-ਭੁੱਲਾਂ ਅਤੇ ਸਮੱਸਿਆਵਾਂ ਲਈ (ਜਿਵੇਂ ਵੱਡੀਆਂ ਇਮੇਜਾਂ, cache-busting builds, unclear tags) ਆਮ ਗਲਤੀਆਂ ਅਤੇ ਉਹਨਾਂ ਤੋਂ ਕਿਵੇਂ ਬਚਣਾ ਦੇ ਬਾਰੇ ਵੇਖੋ.

ਸਮੱਗਰੀ
ਇਸ ਕਹਾਣੀ 'ਚ ਕੀ ਵਿਆਖਿਆ ਹੈ (ਅਤੇ ਇਹ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ)Docker ਤੋਂ ਪਹਿਲਾਂ: ਐਪ ਭੇਜਣਾ ਕਿਉਂ ਮੁਸ਼ਕਿਲ ਸੀSolomon Hykes ਅਤੇ Docker ਦਾ ਜਨਮ (ਉੱਚ-ਸਤਰ ਦਾ ਸਮਾਂ-ਰੇਖਾ)Containers 101: ਉਹ ਕੀ ਹਨ (ਅਤੇ ਕੀ ਨਹੀਂ)Docker ਮਾਡਲ: Dockerfile, ਇਮੇਜ, ਕੰਟੇਨਰਲੈਪਟਾਪ ਤੋਂ ਟੀਮ ਤੱਕ: ਰਜਿਸਟਰੀਜ਼ ਅਤੇ ਇਮੇਜਾਂ ਸਾਂਝਾ ਕਰਨਾCI/CD ਨਾਲ ਕੰਟੇਨਰ ਕਿਉਂ ਫਿੱਟ ਹੁੰਦੇ ਹਨਸਕੇਲ 'ਤੇ ਚਲਾਉਣਾ: Kubernetes ਕਿਉਂ ਦਰਮਿਆਨ ਆਇਆਕੰਟੇਨਰਾਂ ਨੇ ਐਪ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਕਿਵੇਂ ਬਦਲਦਾ ਦਿੱਤਾਸੁਰੱਖਿਆ ਅਤੇ ਭਰੋਸਾ: ਉਹ ਜੋ ਕੰਟੇਨਰ ਆਪਣੇ ਆਪ ਹੱਲ ਨਹੀਂ ਕਰਦੇਆਮ ਗਲਤੀਆਂ ਅਤੇ ਉਹਨਾਂ ਤੋਂ ਕਿਵੇਂ ਬਚਣਾਅੱਜ "ਡਿਫਾਲਟ ਯੂਨਿਟ" ਦਾ ਕੀ ਅਰਥ ਹੈ—ਅਤੇ ਅਗਲੇ ਕਦਮਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ
ਸਾਂਝਾ ਕਰੋ
Koder.ai
Build your own app with Koder today!

The best way to understand the power of Koder is to see it for yourself.

Start FreeBook a Demo