Kaikki säilön prosessit toimivat pääkäyttäjänä, ellet määritä sitä erityisellä tavalla. Tämä vaikuttaa erittäin kätevältä, koska tällä käyttäjällä ei ole rajoituksia. Tästä syystä pääkäyttäjänä työskentely on turvallisuuden kannalta väärin. Jos kukaan täysillä ei työskentele paikallisella tietokoneella pääkäyttäjän oikeuksin, monet suorittavat prosesseja rootin alaisuudessa säilöissä.
Aina löytyy bugeja, jotka sallivat haittaohjelmien paeta säiliöstä ja päästä isäntätietokoneeseen. Pahinta oletetaan, että meidän on varmistettava, että kontin sisällä olevia prosesseja ajaa käyttäjä, jolla ei ole oikeuksia isäntäkoneeseen.
Käyttäjän luominen
Käyttäjän luominen säilössä ei eroa sen luomisesta Linux-jakeluissa. Komennot voivat kuitenkin vaihdella eri peruskuvissa.
Debian-pohjaisissa jakeluissa sinun on lisättävä Docker-tiedostoon seuraava:
RUN groupadd --gid 2000 node
&& useradd --uid 2000 --gid node --shell /bin/bash --create-home node
Alpeille:
RUN addgroup -g 2000 node
&& adduser -u 2000 -G node -s /bin/sh -D node
Prosessien suorittaminen käyttäjältä
Suorita kaikki seuraavat prosessit käyttäjänä, jolla on UID 2000, suorittamalla:
USER 2000
Suorita kaikki seuraavat prosessit solmun käyttäjänä suorittamalla:
USER node
Lue lisää
Asennustilavuudet
Kun asennat taltioita säiliöön, anna käyttäjälle mahdollisuus lukea ja/tai kirjoittaa tiedostoja. Tätä varten säilön käyttäjän UID:n (GID) ja säilön ulkopuolisen käyttäjän, jolla on tarvittavat käyttöoikeudet tiedostoon, on vastattava toisiaan. Tässä tapauksessa käyttäjätunnuksilla ei ole väliä.
Usein Linux-tietokoneissa käyttäjän UID ja GID ovat 1000. Nämä tunnisteet määritetään tietokoneen ensimmäiselle käyttäjälle.
Tunnisteiden löytäminen on helppoa:
id
Saat kattavat tiedot käyttäjästäsi.
Korvaa esimerkeistä 2000 tunnisteellasi ja kaikki on hyvin.
UID:n ja GID:n määrittäminen käyttäjälle
Jos käyttäjä on luotu aiemmin, mutta sinun on muutettava tunnisteita, voit tehdä sen seuraavasti:
RUN usermod -u 1000 node
&& groupmod -g 1000 node
Jos käytät alppipohjaista kuvaa, sinun on asennettava shadow-paketti:
RUN apk add —no-cache shadow
Käyttäjätunnuksen välittäminen säilön sisällä kuvaa rakennettaessa
Jos tunnuksesi ja kaikkien projektissa työskentelevien henkilöiden tunnukset täsmäävät, määritä tämä tunnus Docker-tiedostossa. Usein käyttäjätunnukset eivät kuitenkaan täsmää.
Se, kuinka saavuttaa haluamasi, ei ole heti selvää. Minulle tämä oli vaikein asia Dockerin hallitsemisessa. Monet telakointiaseman käyttäjät eivät ymmärrä, että kuvan elämässä on erilaisia vaiheita. Ensin kuva kootaan Docker-tiedoston avulla. Kun säilöä suoritetaan kuvasta, Docker-tiedostoa ei enää käytetä.
Käyttäjän luomisen on tapahduttava kuvan luomisen yhteydessä. Sama koskee sen käyttäjän määrittämistä, jonka alaisuudessa prosessit käynnistetään. Tämä tarkoittaa, että meidän on jotenkin välitettävä UID (GID) kontin sisällä.
Direktiivejä käytetään ulkoisten muuttujien käyttämiseen Docker-tiedostossa
Dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
Voit välittää argumentteja Docker-Composen kautta seuraavasti:
docker-compose
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS Dockerin kaikkien hienouksien hallitsemiseksi ei riitä, että luet dokumentaatiota tai artikkeleita. Sinun täytyy harjoitella paljon, sinun täytyy saada tunne Dockerista.
Lähde: will.com