আমি যখন আলপাইনকে বেস ইমেজ হিসাবে ব্যবহার করি তখন কীভাবে আমি কোনও ব্যবহারকারী যুক্ত করব?


108

আমি alpine(বা আলপাইন ভিত্তিক একটি চিত্র) আমার ডকফাইফিলের বেস ইমেজ হিসাবে ব্যবহার করছি । ব্যবহারকারী তৈরি করতে আমার কোন নির্দেশাবলী যুক্ত করতে হবে?

শেষ পর্যন্ত আমি এই ব্যবহারকারীটিকে অ্যাপ্লিকেশনটি চালাতে ব্যবহার করব এবং আমি পাত্রে রাখব যাতে রুট ব্যবহারকারী না থাকে।

উত্তর:


223

আলপাইন কমান্ডটি ব্যবহার করে adduserএবং addgroupব্যবহারকারী এবং গোষ্ঠী তৈরি করার জন্য ( useraddএবং তার চেয়ে বেশি usergroup) ব্যবহার করে।

FROM alpine:latest

# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Tell docker that all future commands should run as the appuser user
USER appuser

পতাকাগুলি হ'ল adduser:

ব্যবহার: সংযোজনকারী [বিকল্পগুলি] ব্যবহারকারী [গ্রুপ]

নতুন ব্যবহারকারী তৈরি করুন, বা ব্যবহারকারীকে GROUP এ যুক্ত করুন

        -h ডিআইআর হোম ডিরেক্টরি
        -g GECOS GECOS ক্ষেত্র
        - গুলি লগইন শেল
        -জি জিআরপি গ্রুপ
        একটি সিস্টেম ব্যবহারকারী তৈরি করুন
        -ডি একটি পাসওয়ার্ড বরাদ্দ করবেন না
        -H হোম ডিরেক্টরি তৈরি করবেন না
        -উ ইউআইডি ইউজার আইডি
        -কে স্কেল স্কেলটন ডিরেক্টরি (/ ইত্যাদি / স্কেল)

নতুন ব্যবহারকারীর অফিসিয়াল ডক্স যুক্ত করুন


7
অথবা বিকল্পভাবে, আপনি এটি ব্যবহার করে উপরের পুরো স্নিপেটটি প্রতিস্থাপন করতে পারেন: USER 405এটি আলপাইন লিনাক্সের মধ্যে অতিথি ব্যবহারকারী।
ড্যানিয়েল গার্টম্যান

8
কেন হবে না USER guest?
ব্যবহারকারী 672009

4
আমি একটি নতুন ব্যবহারকারী তৈরি করতে যাব কারণ আমি চাইছি যে সেই ব্যবহারকারীর হোস্ট ওএসের মতো ইউআইডি / জিআইডি একইরকম থাকে, যাতে লিনাক্সে ডকার চালানোর সময় অনুমতি সংক্রান্ত সমস্যা না থাকে। (ম্যাকোস / উইন্ডোজ ব্যবহারকারীদের সাথে কোনও সমস্যা নয়)
এলকুইমিস্ট

4
নোট যে যেহেতু আলপাইন busybox উপর ভিত্তি করে তৈরি, তার adduserএবং addgroupকমান্ড থেকে ভিন্ন adduserএবং addgroupহিসাবে উবুন্টু এবং ডেবিয়ান দ্বারা উপলব্ধ যা আবার সামনে প্রান্ত হয় useraddএবং groupadd। উল্লেখযোগ্যভাবে, দেবিয়ান এবং উবুন্টু কমান্ডগুলি কেবল দীর্ঘ ফর্ম বিকল্পগুলি সমর্থন করে। দেখুন: manpages.debian.org/stretch/adduser/adduser.8.en.html
জ্যাক

আমি ইতিমধ্যে একটি ডকার কনটেইনার তৈরি করেছি, এখন কোন ব্যবহারকারী যুক্ত করতে আমার কোন কমান্ড চালাতে হবে?
আশিষ কুমার

67

কমান্ডগুলি হয় adduserএবং addgroup

ডকারের জন্য এখানে একটি টেম্পলেট রয়েছে যা আপনি ব্যস্তবক্স পরিবেশে (আলপাইন) পাশাপাশি দেবিয়ান-ভিত্তিক পরিবেশ (উবুন্টু ইত্যাদি) ব্যবহার করতে পারেন:

ENV USER=docker
ENV UID=12345
ENV GID=23456

RUN adduser \
    --disabled-password \
    --gecos "" \
    --home "$(pwd)" \
    --ingroup "$USER" \
    --no-create-home \
    --uid "$UID" \
    "$USER"

নিম্নলিখিত নোট:

  • --disabled-password পাসওয়ার্ডের জন্য প্রম্পট প্রতিরোধ করে
  • --gecos "" ডেবিয়ান-ভিত্তিক সিস্টেমগুলিতে "সম্পূর্ণ নাম" ইত্যাদির জন্য প্রম্পটটি বাতিল করে
  • --home "$(pwd)"ব্যবহারকারীর বাড়িতে ওয়ার্কডির সেট করে। আপনি এটি নাও চাইতে পারেন।
  • --no-create-home ক্রাফ্ট থেকে ডিরেক্টরিতে অনুলিপি করা বাধা দেয় /etc/skel

এই অ্যাপ্লিকেশনের জন্য ব্যবহার বিবরণ অনুপস্থিত দীর্ঘ পতাকা কোড উপস্থাপন করে adduser এবং addgroup

নিম্নলিখিত দীর্ঘ-আকারের পতাকাগুলির আলপাইন পাশাপাশি ডেবিয়ান-ডেরাইভেটিভ উভয় ক্ষেত্রেই কাজ করা উচিত:

সংযোজনকারী

BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.

Usage: adduser [OPTIONS] USER [GROUP]

Create new user, or add USER to GROUP

        --home DIR           Home directory
        --gecos GECOS        GECOS field
        --shell SHELL        Login shell
        --ingroup GRP        Group (by name)
        --system             Create a system user
        --disabled-password  Don't assign a password
        --no-create-home     Don't create home directory
        --uid UID            User id

একটি বিষয় লক্ষণীয় তা যদি --ingroupসেট না করা থাকে তবে জিআইডি ইউআইডি মেলানোর জন্য নির্ধারিত হয়। যদি সরবরাহিত ইউআইডি এর সাথে সম্পর্কিত জিআইডি ইতিমধ্যে বিদ্যমান অ্যাড্রেসারটি ব্যর্থ হয়।

অ্যাডগ্রুপ

BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.

Usage: addgroup [-g GID] [-S] [USER] GROUP

Add a group or add a user to a group

        --gid GID  Group id
        --system   Create a system group

হোস্টগুলি ইউআইডি / জিআইডি হিসাবে কনটেইনারগুলি চালনার জন্য ফিক্সুইড প্রকল্পের নিজস্ব বিকল্পটি লেখার চেষ্টা করার সময় আমি এই সমস্ত আবিষ্কার করেছি ।

আমার এন্ট্রিপয়েন্ট হেল্পার স্ক্রিপ্টটি গিটহাবে পাওয়া যাবে।

অভিপ্রায়টি হ'ল স্ক্রিপ্টটিকে প্রথম যুক্তি হিসাবে প্রেন্ডেন্ড করা ENTRYPOINTযা ডকারকে প্রাসঙ্গিক বাইন্ড মাউন্ট থেকে ইউআইডি এবং জিআইডি অনুমান করা উচিত।

অনুমতিগুলি কোথায় থেকে অনুমান করা উচিত তা নির্ধারণের জন্য একটি পরিবেশ পরিবর্তনশীল "TEMPLATE" প্রয়োজন হতে পারে।

(লেখার সময় আমার স্ক্রিপ্টের জন্য আমার কাছে ডকুমেন্টেশন নেই It's এটি এখনও টোড তালিকায় রয়েছে !!)


11
+1, কমান্ড আরগসের জন্য দীর্ঘ ফর্ম ব্যবহার করা পঠনযোগ্যতা বৃদ্ধি করে এবং রক্ষণাবেক্ষণকে সহজ করে তোলে। শেল স্ক্রিপ্ট লেখা সবসময় দীর্ঘ রুপে ব্যবহার করেন, তখন (Dockerfile চালান হয় একটি শেল স্ক্রিপ্ট ছাড়া অন্য কিছুই)।
ভিক্টর শ্রড্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.