Pamaké dina Docker

Andrey Kopylov, CTO urang, mikanyaah, aktip ngagunakeun jeung promotes Docker. Dina tulisan anyar, anjeunna ngajelaskeun kumaha carana nyiptakeun pangguna di Docker. Karya anu leres sareng aranjeunna, naha pangguna henteu kedah ditinggalkeun ku hak akar sareng kumaha carana ngabéréskeun masalah indikator anu teu cocog dina Dockerfile.

Sadaya prosés dina wadahna bakal dijalankeun salaku pangguna akar, kecuali anjeun netepkeunana ku cara anu khusus. Ieu sigana pisan merenah, sabab pamaké ieu euweuh larangan. Ieu sababna damel salaku akar salah tina sudut pandang kaamanan. Upami teu aya anu leres-leres damel dina komputer lokal kalayan hak akar, maka seueur prosés anu dijalankeun dina akar dina wadah.

Aya salawasna bug anu bakal ngidinan malware kabur ti wadahna sarta asup kana komputer host. Anggap awon, urang kudu mastikeun yén prosés di jero wadahna dijalankeun ku pamaké nu teu boga hak naon on mesin host.

Nyiptakeun pangguna

Nyiptakeun pangguna dina wadah henteu béda sareng nyiptakeunana dina distribusi Linux. Nanging, paréntahna tiasa bénten-béda pikeun gambar dasar anu béda.

Pikeun distribusi dumasar-debian, anjeun kedah nambihan ieu kana Dockerfile:

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

Pikeun alpine:

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

Ngajalankeun prosés ti pamaké

Pikeun ngajalankeun sadaya prosés salajengna salaku pangguna nganggo UID 2000, jalankeun:

USER 2000

Pikeun ngajalankeun sadaya prosés anu salajengna salaku pangguna titik, jalankeun:

USER node

Beuki di dokuméntasi.

Jilid ningkatna

Nalika masangkeun volume dina wadah, pasihan kamampuan pikeun maca sareng / atanapi nyerat file. Jang ngalampahkeun ieu, UID (GID) pangguna dina wadahna sareng pangguna di luar wadah anu ngagaduhan idin anu pas pikeun ngakses file kedah cocog. Dina hal ieu, usernames teu masalah.

Sering dina komputer Linux, UID sareng GID pangguna sami sareng 1000. Identifier ieu ditugaskeun ka pangguna munggaran komputer.

Panggihan identifier anjeun gampang:

id

Anjeun bakal nampi inpormasi lengkep ngeunaan pangguna anjeun.
Ganti 2000 tina conto sareng identifier anjeun sareng sadayana bakal saé.

Netepkeun UID sareng GID ka pangguna

Upami pangguna didamel sateuacana, tapi anjeun kedah ngarobih identifier, anjeun tiasa ngalakukeun sapertos kieu:

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

Upami anjeun nganggo gambar dasar alpine, anjeun kedah pasang pakét kalangkang:

RUN apk add —no-cache shadow

Ngalirkeun ID pangguna di jero wadah nalika ngawangun gambar

Upami ID anjeun sareng KTP sadaya jalma anu damel dina pertandingan proyék, teras sebatkeun ID ieu dina Dockerfile. Sanajan kitu, mindeng ID pamaké teu cocog.

Kumaha pikeun ngahontal naon anu anjeun pikahoyong henteu langsung jelas. Pikeun kuring, ieu mangrupikeun hal anu paling hese dina prosés ngawasaan Docker. Seueur pangguna docker henteu sadar yén aya sababaraha tahapan dina kahirupan gambar. Mimiti, gambar dirakit nganggo Dockerfile. Nalika ngajalankeun wadah tina gambar, Dockerfile henteu dianggo deui.

Nyiptakeun pangguna kedah lumangsung nalika gambar diwangun. Sami manglaku ka nangtukeun pamaké handapeun saha prosés anu dibuka. Ieu ngandung harti yén urang kudu kumaha bae lulus UID (GID) jero wadahna.

Directives dipaké pikeun ngagunakeun variabel éksternal dina Dockerfile ENV и ARG. Perbandingan lengkep diréktif di dieu.

dockerfile

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

Anjeun tiasa ngalebetkeun argumen via docker-compose sapertos kieu:

docker-nyusun

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

PS Pikeun ngawasaan sagala intricacies of Docker, teu cukup maca dokuméntasi atawa artikel. Anjeun kedah seueur latihan, anjeun kedah ngaraosan Docker.

sumber: www.habr.com

Tambahkeun komentar