GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menambahkan pengguna ke wadah Docker?

Caranya adalah dengan menggunakan useradd alih-alih pembungkus interaktifnya adduser .Saya biasanya membuat pengguna dengan:

RUN useradd -ms /bin/bash newuser

yang membuat direktori home untuk pengguna dan memastikan bahwa bash adalah shell default.

Anda kemudian dapat menambahkan:

USER newuser
WORKDIR /home/newuser

ke dockerfile Anda. Setiap perintah sesudahnya serta sesi interaktif akan dieksekusi sebagai newuser pengguna :

docker run -t -i image
[email protected]:~$

Anda mungkin harus memberikan newuser izin untuk menjalankan program yang ingin Anda jalankan sebelum menjalankan perintah pengguna.

Menggunakan pengguna yang tidak memiliki hak istimewa di dalam wadah adalah ide yang bagus untuk alasan keamanan. Ini juga memiliki beberapa kekurangan. Yang terpenting, orang yang mengambil gambar dari gambar Anda harus beralih kembali ke root sebelum mereka dapat menjalankan perintah dengan hak superuser.


Menambahkan pengguna di buruh pelabuhan dan menjalankan aplikasi Anda di bawah pengguna itu adalah praktik yang sangat baik untuk sudut pandang keamanan. Untuk melakukan itu saya akan merekomendasikan langkah-langkah di bawah ini:

FROM node:10-alpine

# Copy source to container
RUN mkdir -p /usr/app/src

# Copy source code
COPY src /usr/app/src
COPY package.json /usr/app
COPY package-lock.json /usr/app

WORKDIR /usr/app

# Running npm install for production purpose will not run dev dependencies.
RUN npm install -only=production    

# Create a user group 'xyzgroup'
RUN addgroup -S xyzgroup

# Create a user 'appuser' under 'xyzgroup'
RUN adduser -S -D -h /usr/app/src appuser xyzgroup

# Chown all the files to the app user.
RUN chown -R appuser:xyzgroup /usr/app

# Switch to 'appuser'
USER appuser

# Open the mapped port
EXPOSE 3000

# Start the process
CMD ["npm", "start"]

Langkah-langkah di atas adalah contoh lengkap dari menyalin file proyek NodeJS, membuat grup pengguna dan pengguna, memberikan izin kepada pengguna untuk folder proyek, beralih ke pengguna yang baru dibuat dan menjalankan aplikasi di bawah pengguna tersebut.


Ubuntu

Coba baris berikut di Dockerfile :

RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1001 ubuntu
USER ubuntu
WORKDIR /home/ubuntu

useradd opsi (lihat:man useradd ):

  • -r , --system Buat akun sistem.
  • -m , --create-home Buat direktori beranda pengguna.
  • -d , --home-dir HOME_DIR Direktori beranda akun baru.
  • -s , --shell SHELL Shell masuk dari akun baru.
  • -g , --gid GROUP Nama atau ID grup utama.
  • -G , --groups GROUPS Daftar grup tambahan.
  • -u , --uid UID Tentukan ID pengguna.
  • -p , --password PASSWORD Kata sandi terenkripsi dari akun baru (mis. ubuntu ).

Menyetel kata sandi pengguna default

Untuk menyetel kata sandi pengguna, tambahkan -p "$(openssl passwd -1 ubuntu)" ke useradd perintah.

Atau tambahkan baris berikut ke Dockerfile Anda :

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN echo 'ubuntu:ubuntu' | chpasswd

Instruksi shell pertama adalah memastikan bahwa -o pipefail opsi diaktifkan sebelum RUN dengan pipa di dalamnya. Baca lebih lanjut:Hadolint:Linting Dockerfile Anda.


Untuk menghindari pertanyaan interaktif oleh adduser, Anda dapat memanggilnya dengan parameter berikut:

RUN adduser --disabled-password --gecos '' newuser

--gecos parameter digunakan untuk mengatur informasi tambahan. Dalam hal ini hanya kosong.

Pada sistem dengan busybox (seperti Alpine), gunakan

RUN adduser -D -g '' newuser

Lihat busybox adduser


Linux
  1. Bagaimana cara menambahkan pengguna ke Ubuntu?

  2. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  3. Cara Menjalankan MySQL Dalam Wadah Docker

  1. Bagaimana cara menambahkan pengguna ke grup di Linux

  2. Cara Menjalankan Perintah di Running Docker Container

  3. Cara menjalankan tugas cron di dalam wadah buruh pelabuhan

  1. Bagaimana cara menambahkan pengguna ke grup di Linux

  2. Cara Keluar dari Kontainer Docker

  3. Bagaimana cara mengirim sinyal ke program yang dijalankan dalam wadah buruh pelabuhan?