ልዩ በሆነ መንገድ ካልገለጹት በስተቀር በእቃው ውስጥ ያሉት ሁሉም ሂደቶች እንደ ስር ተጠቃሚ ይሆናሉ። ይህ በጣም ምቹ ይመስላል, ምክንያቱም ይህ ተጠቃሚ ምንም ገደብ የለውም. ለዚህም ነው እንደ ስር መስራት ከደህንነት አንፃር ስህተት የሆነው። በትክክለኛው አእምሮ ውስጥ ማንም ሰው በአካባቢው ኮምፒዩተር ላይ ከስር መብቶች ጋር የማይሰራ ከሆነ ብዙ ሂደቶችን በመያዣዎች ውስጥ ስር ያካሂዳሉ።
ማልዌር ከመያዣው እንዲያመልጥ እና ወደ አስተናጋጁ ኮምፒዩተር እንዲገባ የሚፈቅዱ ስህተቶች ሁል ጊዜ አሉ። በጣም መጥፎውን ግምት ውስጥ በማስገባት በማጠራቀሚያው ውስጥ ያሉ ሂደቶች በአስተናጋጅ ማሽን ላይ ምንም አይነት መብት በሌለው ተጠቃሚ የሚሄዱ መሆናቸውን ማረጋገጥ አለብን።
የተጠቃሚ ፈጠራ
በኮንቴይነር ውስጥ ተጠቃሚን መፍጠር በሊኑክስ ስርጭቶች ውስጥ ከመፍጠር አይለይም። ሆኖም ትእዛዞቹ ለተለያዩ የመሠረት ምስሎች ሊለያዩ ይችላሉ።
በዲቢያን ላይ ለተመሠረቱ ስርጭቶች፣ ወደ 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
ተጨማሪ በ
የመጫኛ መጠኖች
በመያዣው ውስጥ መጠኖችን በሚጭኑበት ጊዜ ለተጠቃሚው ፋይሎችን የማንበብ እና/ወይም የመፃፍ ችሎታ ይስጡት። ይህንን ለማድረግ በመያዣው ውስጥ ያለው የተጠቃሚው ዩአይዲ (ጂአይዲ) እና ከመያዣው ውጭ ያለው ፋይሉን የመድረስ አግባብ ያለው ፍቃድ ያለው ተጠቃሚ መመሳሰል አለበት። በዚህ አጋጣሚ የተጠቃሚ ስሞች ምንም አይደሉም.
ብዙ ጊዜ በሊኑክስ ኮምፒዩተር ላይ የተጠቃሚው ዩአይዲ እና ጂአይዲ ከ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 ውስጥ ውጫዊ ተለዋዋጮችን ለመጠቀም ጥቅም ላይ ይውላሉ
Dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
ክርክሮችን በ docker-በሚከተለው በኩል ማለፍ ይችላሉ፡-
ዳክለር-መፃፊያ
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS ሁሉንም የዶክተርን ውስብስብ ነገሮች ለመቆጣጠር ሰነዶቹን ወይም ጽሑፎቹን ማንበብ በቂ አይደለም. ብዙ ልምምድ ማድረግ ያስፈልግዎታል, ለዶከር ስሜት ሊሰማዎት ይገባል.
ምንጭ: hab.com