Panganggo ing Docker

Andrey Kopylov, CTO kita, tresna, aktif nggunakake lan promosi Docker. Ing artikel anyar, dheweke nerangake carane nggawe pangguna ing Docker. Pakaryan sing bener karo wong-wong mau, kenapa pangguna ora kudu ditinggalake kanthi hak root lan cara ngatasi masalah indikator sing ora cocog ing Dockerfile.

Kabeh pangolahan ing wadhah bakal mbukak minangka pangguna root, kajaba sampeyan nemtokake kanthi cara khusus. Iki katon trep banget, amarga pangguna iki ora ana watesan. Iki sebabe digunakake minangka root salah saka sudut pandang keamanan. Yen ora ana siji ing pikiran tengen bisa ing komputer lokal karo hak ROOT, banjur akeh mbukak pangolahan ing ROOT ing kontaner.

Ana uga kewan omo sing bakal ngidini malware uwal saka wadhah lan mlebu menyang komputer host. Assuming paling awon, kita kudu mesthekake yen pangolahan nang wadhah mbukak dening pangguna sing ora duwe hak ing mesin inang.

Nggawe pangguna

Nggawe pangguna ing wadhah ora beda karo nggawe ing distribusi Linux. Nanging, printah bisa beda-beda kanggo gambar dhasar sing beda.

Kanggo distribusi basis debian, sampeyan kudu nambahake ing Dockerfile:

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

Kanggo alpine:

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

Mlaku proses saka pangguna

Kanggo mbukak kabeh proses sakteruse minangka pangguna karo UID 2000, mbukak:

USER 2000

Kanggo mbukak kabeh proses sakteruse minangka pangguna simpul, jalanake:

USER node

Liyane ing dokumentasi.

Volume pemasangan

Nalika nambah volume ing wadhah, menehi pangguna kemampuan kanggo maca lan / utawa nulis file. Kanggo nindakake iki, UID (GID) pangguna ing wadhah lan pangguna ing njaba wadhah sing duwe ijin sing cocog kanggo ngakses file kudu cocog. Ing kasus iki, jeneng panganggo ora masalah.

Asring ing komputer Linux, UID lan GID pangguna padha karo 1000. Pengenal kasebut ditugasake kanggo pangguna pertama komputer kasebut.

Nggoleki pengenal sampeyan gampang:

id

Sampeyan bakal nampa informasi lengkap babagan pangguna sampeyan.
Ganti 2000 saka conto karo pengenal sampeyan lan kabeh bakal apik.

Nemtokake UID lan GID menyang pangguna

Yen pangguna wis digawe sadurunge, nanging sampeyan kudu ngganti pengenal, sampeyan bisa nindakake kaya iki:

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

Yen sampeyan nggunakake gambar dhasar alpine, sampeyan kudu nginstal paket bayangan:

RUN apk add β€”no-cache shadow

Nglebokake ID pangguna ing wadhah nalika nggawe gambar

Yen ID lan ID kabeh wong sing nggarap proyek cocog, banjur mung nemtokake ID iki ing Dockerfile. Nanging, asring ID pangguna ora cocog.

Carane entuk apa sing dikarepake ora langsung jelas. Kanggo kula, iki minangka sing paling angel ing proses nguwasani Docker. Akeh pangguna docker ora ngerti manawa ana macem-macem tahapan ing urip gambar. Pisanan, gambar dirakit nggunakake Dockerfile. Nalika mbukak wadhah saka gambar, Dockerfile ora digunakake maneh.

Nggawe pangguna kudu kedadeyan nalika gambar dibangun. Padha ditrapake kanggo nemtokake pangguna sing proses diluncurake. Iki tegese kita kudu ngliwati UID (GID) ing wadhah kasebut.

Directives digunakake kanggo nggunakake variabel eksternal ing Dockerfile ENV ΠΈ ARG. Perbandingan rinci arahan kene.

file docker

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

Sampeyan bisa ngirim argumen liwat docker-compose kaya iki:

docker-compose

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

PS Kanggo nguwasani kabeh intricacies Docker, iku ora cukup kanggo maca dokumentasi utawa artikel. Sampeyan kudu latihan akeh, sampeyan kudu ngrasakake Docker.

Source: www.habr.com

Add a comment