கொள்கலனில் உள்ள அனைத்து செயல்முறைகளும் ரூட் பயனராக இயங்கும், நீங்கள் அதை ஒரு சிறப்பு வழியில் குறிப்பிடவில்லை என்றால். இது மிகவும் வசதியானது, ஏனெனில் இந்த பயனருக்கு எந்த கட்டுப்பாடுகளும் இல்லை. இதனால்தான் ரூட்டாக வேலை செய்வது பாதுகாப்புக் கண்ணோட்டத்தில் தவறானது. ரூட் உரிமைகள் உள்ள உள்ளூர் கணினியில் தங்களின் சரியான எண்ணத்தில் யாரும் வேலை செய்யவில்லை என்றால், பலர் கன்டெய்னர்களில் ரூட்டின் கீழ் செயல்முறைகளை இயக்குகிறார்கள்.
தீம்பொருளை கொள்கலனில் இருந்து தப்பித்து ஹோஸ்ட் கணினியில் வர அனுமதிக்கும் பிழைகள் எப்போதும் உள்ளன. மோசமானதாகக் கருதினால், கொள்கலனில் உள்ள செயல்முறைகள் ஹோஸ்ட் கணினியில் எந்த உரிமையும் இல்லாத பயனரால் இயக்கப்படுவதை உறுதிசெய்ய வேண்டும்.
ஒரு பயனரை உருவாக்குதல்
ஒரு கொள்கலனில் ஒரு பயனரை உருவாக்குவது லினக்ஸ் விநியோகங்களில் அதை உருவாக்குவதிலிருந்து வேறுபட்டதல்ல. இருப்பினும், வெவ்வேறு அடிப்படை படங்களுக்கு கட்டளைகள் மாறுபடலாம்.
டெபியன் அடிப்படையிலான விநியோகங்களுக்கு, நீங்கள் பின்வருவனவற்றை 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
படத்தை உருவாக்கும்போது கண்டெய்னருக்குள் பயனர் ஐடியை அனுப்புதல்
உங்கள் ஐடி மற்றும் திட்டப்பணியில் பணிபுரியும் அனைவரின் ஐடிகளும் பொருந்தினால், இந்த ஐடியை Dockerfile இல் குறிப்பிடவும். இருப்பினும், பெரும்பாலும் பயனர் ஐடிகள் பொருந்தாது.
நீங்கள் விரும்பியதை எவ்வாறு அடைவது என்பது உடனடியாகத் தெரியவில்லை. என்னைப் பொறுத்தவரை, டோக்கரை மாஸ்டரிங் செய்யும் செயல்பாட்டில் இது மிகவும் கடினமான விஷயம். பல டோக்கர் பயனர்கள் ஒரு படத்தின் வாழ்க்கையில் வெவ்வேறு நிலைகள் இருப்பதை உணரவில்லை. முதலில், படம் ஒரு Dockerfile ஐப் பயன்படுத்தி அசெம்பிள் செய்யப்படுகிறது. ஒரு படத்திலிருந்து ஒரு கொள்கலனை இயக்கும் போது, Dockerfile இனி பயன்படுத்தப்படாது.
படத்தை உருவாக்கும்போது பயனர் உருவாக்கம் நிகழ வேண்டும். எந்த பயனரின் கீழ் செயல்முறைகள் தொடங்கப்படுகின்றன என்பதைத் தீர்மானிப்பதற்கும் இது பொருந்தும். அதாவது நாம் எப்படியாவது UID (GID) யை கொள்கலனுக்குள் அனுப்ப வேண்டும்.
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 டோக்கரின் அனைத்து நுணுக்கங்களையும் மாஸ்டர் செய்ய, ஆவணங்கள் அல்லது கட்டுரைகளைப் படிப்பது போதாது. நீங்கள் நிறைய பயிற்சி செய்ய வேண்டும், நீங்கள் டோக்கரைப் பற்றிய உணர்வைப் பெற வேண்டும்.
ஆதாரம்: www.habr.com