Docker ۾ استعمال ڪندڙ

آندري ڪوپيلوف، اسان جو CTO، پيار ڪري ٿو، فعال طور تي استعمال ڪري ٿو ۽ ترقي ڪري ٿو Docker. هڪ نئين آرٽيڪل ۾، هو وضاحت ڪري ٿو ته ڊاکر ۾ صارفين کي ڪيئن ٺاهيو. انهن سان صحيح ڪم، صارفين کي روٽ حقن سان ڇو نه ڇڏيو وڃي ۽ Dockerfile ۾ بي ترتيب اشارن جو مسئلو ڪيئن حل ڪجي.

ڪنٽينر ۾ سڀ عمل روٽ استعمال ڪندڙ جي طور تي هلندا، جيستائين توهان ان کي خاص طريقي سان بيان نه ڪيو. اهو تمام آسان لڳي ٿو، ڇاڪاڻ ته هن صارف تي ڪا به پابندي ناهي. اهو ئي سبب آهي ته روٽ طور ڪم ڪرڻ سيڪيورٽي نقطي نظر کان غلط آهي. جيڪڏهن ڪو به ماڻهو انهن جي صحيح ذهن ۾ مقامي ڪمپيوٽر تي روٽ حقن سان ڪم نٿو ڪري، پوء ڪيترن ئي ڪنٽينرز ۾ روٽ جي تحت عمل کي هلائي ٿو.

ھميشه ڪي ڪيڙا آھن جيڪي مالويئر کي ڪنٽينر مان فرار ٿيڻ ۽ ھوسٽ ڪمپيوٽر تي پھچڻ جي اجازت ڏين ٿا. بدترين طور تي، اسان کي يقيني بڻائڻ گهرجي ته ڪنٽينر اندر پروسيس هڪ صارف طرفان هلائي رهيا آهن جن کي ميزبان مشين تي ڪو به حق نه آهي.

صارف ٺاهڻ

ڪنٽينر ۾ صارف ٺاهڻ ان کي لينڪس ڊويزن ۾ ٺاهڻ کان مختلف ناهي. بهرحال، حڪم مختلف بنيادي تصويرن لاء مختلف ٿي سگهن ٿا.

ديبين جي بنياد تي تقسيم لاء، توهان کي Dockerfile ۾ هيٺين شامل ڪرڻ جي ضرورت آهي:

RUN groupadd --gid 2000 node 
  && useradd --uid 2000 --gid node --shell /bin/bash --create-home node

الپائن لاء:

RUN addgroup -g 2000 node 
    && adduser -u 2000 -G node -s /bin/sh -D node

استعمال ڪندڙ کان هلندڙ عمل

UID 2000 سان استعمال ڪندڙ جي طور تي ايندڙ سڀني عملن کي هلائڻ لاءِ، ھلايو:

USER 2000

نوڊ استعمال ڪندڙ جي طور تي سڀني ايندڙ عملن کي هلائڻ لاء، هلائڻ:

USER node

وڌيڪ داخل دستاويز.

چڙهڻ حجم

جڏهن هڪ ڪنٽينر اندر حجم چڙهڻ، صارف کي فائلون پڙهڻ ۽/يا لکڻ جي صلاحيت مهيا ڪريو. ائين ڪرڻ لاءِ، ڪنٽينر ۾ استعمال ڪندڙ جي UID (GID) ۽ ڪنٽينر کان ٻاهر استعمال ڪندڙ جن وٽ فائل تائين رسائي جي مناسب اجازتون آهن، انهن کي ملائڻ گهرجي. هن معاملي ۾، صارفين جو نالو فرق نه آهي.

گهڻو ڪري هڪ لينڪس ڪمپيوٽر تي، صارف جي UID ۽ GID 1000 جي برابر آهن. اهي سڃاڻپ ڪندڙ ڪمپيوٽر جي پهرين استعمال ڪندڙ کي مقرر ڪيا ويا آهن.

توهان جي سڃاڻپ ڪندڙ ڳولڻ آسان آهي:

id

توھان کي توھان جي استعمال ڪندڙ بابت جامع معلومات ملندي.
مثالن مان 2000 کي تبديل ڪريو پنھنجي سڃاڻپ ڪندڙ سان ۽ سڀ ڪجھ ٺيڪ ٿي ويندو.

هڪ صارف کي UID ۽ GID تفويض ڪرڻ

جيڪڏهن صارف اڳ ۾ ٺاهيو ويو هو، پر توهان کي سڃاڻپ ڪندڙ تبديل ڪرڻ جي ضرورت آهي، توهان ان کي هن طرح ڪري سگهو ٿا:

RUN usermod -u 1000 node 
  && groupmod -g 1000 node

جيڪڏهن توهان الپائن بنيادي تصوير استعمال ڪري رهيا آهيو، توهان کي ڇانو پيڪيج کي نصب ڪرڻ جي ضرورت آهي:

RUN apk add —no-cache shadow

تصوير ٺاھڻ وقت ڪنٽينر اندر يوزر آئي ڊي پاس ڪرڻ

جيڪڏهن توهان جي آئي ڊي ۽ انهن سڀني ماڻهن جي سڃاڻپ آهي جيڪي پروجيڪٽ تي ڪم ڪن ٿا، ته پوء صرف هن ID کي Dockerfile ۾ بيان ڪريو. تنهن هوندي، اڪثر ڪري صارف جي سڃاڻپ نه ملنديون آهن.

جيڪو توهان چاهيو ٿا اهو ڪيئن حاصل ڪجي فوري طور تي واضح ناهي. منهنجي لاءِ، ڊاڪر کي ماسٽر ڪرڻ جي عمل ۾ اهو سڀ کان ڏکيو ڪم هو. ڪيترائي ڊاکر استعمال ڪندڙ اهو نه ٿا سمجهن ته تصوير جي زندگي ۾ مختلف مرحلا آهن. پهرين، تصوير هڪ Dockerfile استعمال ڪندي گڏ ڪيو ويو آهي. جڏهن هڪ تصوير مان ڪنٽينر هلائي رهيو آهي، Dockerfile هاڻي استعمال نه ڪيو ويو آهي.

استعمال ڪندڙ جي تخليق ٿيڻ گهرجي جڏهن تصوير ٺاهي وئي آهي. ساڳيو ئي استعمال ڪندڙ کي طئي ڪرڻ تي لاڳو ٿئي ٿو جنهن جي تحت عمل شروع ڪيا ويا آهن. هن جو مطلب اهو آهي ته اسان کي ڪنهن به طريقي سان پاس ڪرڻ گهرجي UID (GID) ڪنٽينر اندر.

Dockerfile ۾ خارجي متغير استعمال ڪرڻ لاء هدايتون استعمال ڪيون ويون آهن اين وي и آر ڊي. هدايتن جو تفصيلي مقابلو هتي.

Dockerfile

ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node 
  && groupmod -g $GID node

توھان ھن طرح ڊاڪر-ڪپوز ذريعي دليلن کي پاس ڪري سگھو ٿا:

ڊڪر ٺاهيندڙ

build:
  context: ./src/backend
  args:
    UID: 1000
    GID: 1000

PS Docker جي سڀني پيچيدگين کي ماهر ڪرڻ لاء، اهو ڪافي نه آهي پڙهڻ لاء دستاويز يا آرٽيڪل. توهان کي تمام گهڻو مشق ڪرڻ جي ضرورت آهي، توهان کي محسوس ڪرڻ جي ضرورت آهي Docker لاء.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو