ನೀವು ಅದನ್ನು ವಿಶೇಷ ರೀತಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸದ ಹೊರತು ಕಂಟೇನರ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಪ್ರಕ್ರಿಯೆಗಳು ರೂಟ್ ಬಳಕೆದಾರರಂತೆ ರನ್ ಆಗುತ್ತವೆ. ಇದು ತುಂಬಾ ಅನುಕೂಲಕರವೆಂದು ತೋರುತ್ತದೆ, ಏಕೆಂದರೆ ಈ ಬಳಕೆದಾರರಿಗೆ ಯಾವುದೇ ನಿರ್ಬಂಧಗಳಿಲ್ಲ. ಇದಕ್ಕಾಗಿಯೇ ರೂಟ್ ಆಗಿ ಕೆಲಸ ಮಾಡುವುದು ಭದ್ರತಾ ದೃಷ್ಟಿಕೋನದಿಂದ ತಪ್ಪಾಗಿದೆ. ತಮ್ಮ ಸರಿಯಾದ ಮನಸ್ಸಿನಲ್ಲಿ ಯಾರೂ ಮೂಲ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಸ್ಥಳೀಯ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ನಂತರ ಕಂಟೇನರ್ಗಳಲ್ಲಿ ರೂಟ್ ಅಡಿಯಲ್ಲಿ ಅನೇಕ ರನ್ ಪ್ರಕ್ರಿಯೆಗಳು.
ಮಾಲ್ವೇರ್ ಕಂಟೇನರ್ನಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಹೋಸ್ಟ್ ಕಂಪ್ಯೂಟರ್ಗೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುವ ದೋಷಗಳು ಯಾವಾಗಲೂ ಇರುತ್ತವೆ. ಕೆಟ್ಟದ್ದನ್ನು ಊಹಿಸಿ, ಹೋಸ್ಟ್ ಗಣಕದಲ್ಲಿ ಯಾವುದೇ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿರದ ಬಳಕೆದಾರರಿಂದ ಕಂಟೇನರ್ನೊಳಗಿನ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ನಡೆಸಲಾಗುತ್ತಿದೆ ಎಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು.
ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ
ಕಂಟೇನರ್ನಲ್ಲಿ ಬಳಕೆದಾರರನ್ನು ರಚಿಸುವುದು ಅದನ್ನು ಲಿನಕ್ಸ್ ವಿತರಣೆಗಳಲ್ಲಿ ರಚಿಸುವುದಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿರುವುದಿಲ್ಲ. ಆದಾಗ್ಯೂ, ವಿಭಿನ್ನ ಮೂಲ ಚಿತ್ರಗಳಿಗೆ ಆಜ್ಞೆಗಳು ಬದಲಾಗಬಹುದು.
ಡೆಬಿಯನ್-ಆಧಾರಿತ ವಿತರಣೆಗಳಿಗಾಗಿ, ನೀವು ಡಾಕರ್ಫೈಲ್ಗೆ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ:
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 ಅನ್ನು ರವಾನಿಸುವುದು
ನಿಮ್ಮ ಐಡಿ ಮತ್ತು ಪ್ರಾಜೆಕ್ಟ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಎಲ್ಲ ಜನರ ಐಡಿಗಳು ಹೊಂದಾಣಿಕೆಯಾಗಿದ್ದರೆ, ಡಾಕರ್ಫೈಲ್ನಲ್ಲಿ ಈ ಐಡಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. ಆದಾಗ್ಯೂ, ಸಾಮಾನ್ಯವಾಗಿ ಬಳಕೆದಾರ ID ಗಳು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.
ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ಸಾಧಿಸುವುದು ಹೇಗೆ ಎಂಬುದು ತಕ್ಷಣವೇ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ. ನನಗೆ, ಡಾಕರ್ ಅನ್ನು ಮಾಸ್ಟರಿಂಗ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಇದು ಅತ್ಯಂತ ಕಷ್ಟಕರವಾದ ವಿಷಯವಾಗಿತ್ತು. ಅನೇಕ ಡಾಕರ್ ಬಳಕೆದಾರರಿಗೆ ಚಿತ್ರದ ಜೀವನದಲ್ಲಿ ವಿವಿಧ ಹಂತಗಳಿವೆ ಎಂದು ತಿಳಿದಿರುವುದಿಲ್ಲ. ಮೊದಲಿಗೆ, ಚಿತ್ರವನ್ನು ಡಾಕರ್ಫೈಲ್ ಬಳಸಿ ಜೋಡಿಸಲಾಗಿದೆ. ಚಿತ್ರದಿಂದ ಕಂಟೇನರ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ, ಡಾಕರ್ಫೈಲ್ ಅನ್ನು ಇನ್ನು ಮುಂದೆ ಬಳಸಲಾಗುವುದಿಲ್ಲ.
ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಿದಾಗ ಬಳಕೆದಾರರ ಸೃಷ್ಟಿ ಸಂಭವಿಸಬೇಕು. ಯಾವ ಬಳಕೆದಾರರ ಅಡಿಯಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಇದು ಅನ್ವಯಿಸುತ್ತದೆ. ಇದರರ್ಥ ನಾವು ಹೇಗಾದರೂ UID (GID) ಅನ್ನು ಕಂಟೇನರ್ ಒಳಗೆ ರವಾನಿಸಬೇಕು.
ಡಾಕರ್ಫೈಲ್ನಲ್ಲಿ ಬಾಹ್ಯ ಅಸ್ಥಿರಗಳನ್ನು ಬಳಸಲು ನಿರ್ದೇಶನಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ
ಡಾಕರ್ಫೈಲ್
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
ಪಿಎಸ್ ಡಾಕರ್ನ ಎಲ್ಲಾ ಜಟಿಲತೆಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳಲು, ದಸ್ತಾವೇಜನ್ನು ಅಥವಾ ಲೇಖನಗಳನ್ನು ಓದುವುದು ಸಾಕಾಗುವುದಿಲ್ಲ. ನೀವು ಸಾಕಷ್ಟು ಅಭ್ಯಾಸ ಮಾಡಬೇಕಾಗಿದೆ, ನೀವು ಡಾಕರ್ಗಾಗಿ ಭಾವನೆಯನ್ನು ಪಡೆಯಬೇಕು.
ಮೂಲ: www.habr.com