ডকার পাত্রে কোনও ফাইল যুক্ত করবেন যার মূল অনুমতি নেই?


16

আমি অফিসিয়াল tomcatচিত্র থেকে নির্মিত একটি ডকার ইমেজে একটি ফাইল যুক্ত করার চেষ্টা করছি । এই চিত্রটির মূল অধিকার নেই বলে মনে হয় না, tomcatআমি ব্যাশ চালালে আমি ব্যবহারকারী হিসাবে লগইন করেছি:

docker run -it tomcat /bin/bash
tomcat@06359f7cc4db:/usr/local/tomcat$ 

যদি আমি Dockerfileসেই ধারকটিতে কোনও ফাইল অনুলিপি করার নির্দেশ দিই , তবে ফাইলটির অনুমতি রয়েছে 644এবং সেই মালিকের রয়েছে root। আমি যতদূর বুঝতে পেরেছি, ডকফাইফিলের সমস্ত কমান্ড রুট হিসাবে চালিত হওয়ায় এটি যুক্তিযুক্ত বলে মনে হয়। তবে আমি যদি সেই ফাইলটির মালিকানা পরিবর্তন করতে চেষ্টা করি তবে tomcat:tomcatআমি একটি Operation not permittedত্রুটি পেয়েছি ।

আমি কেন সেই চিত্রটিতে অনুলিপি করা কোনও ফাইলের অনুমতিগুলি পরিবর্তন করতে পারি না?

এটি কীভাবে পুনরুত্পাদন করা যায়:

mkdir docker-addfilepermission
cd docker-addfilepermission
touch test.txt
echo 'FROM tomcat
COPY test.txt /usr/local/tomcat/webapps/
RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfile

docker build .

এর আউটপুট docker build .:

Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM tomcat
 ---> 44859847ef64
Step 1 : COPY test.txt /usr/local/tomcat/webapps/
 ---> Using cache
 ---> a2ccb92480a4
Step 2 : RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt
 ---> Running in 208e7ff0ec8f
chown: changing ownership of '/usr/local/tomcat/webapps/test.txt': Operation not permitted
2014/11/01 00:30:33 The command [/bin/sh -c chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt] returned a non-zero code: 1

উত্তর:


20

টমক্যাটের জন্য ডকফেরিল দেখার এবং পরিবর্তন করার সম্ভবত একটি উপায় আছে তবে আমি কয়েক মিনিটের পরে এটি বের করতে পারি না। আমার অবাস্তব সমাধানটি ডুবে যাওয়ার আগে এই লাইনটি যুক্ত করা:

USER root

আপনি যদি সুবিধাগুলি ডি-এলিভেট করতে চান তবে (যা প্রস্তাবিত) আপনি এই লাইনটি যুক্ত করতে পারেন:

USER tomcat

পর্যায়ক্রমে, এমন কোনও চিত্রের সাথে কাজ করুন যার কোনও সফ্টওয়্যার ইনস্টল করা নেই যাতে আপনি আপনার ডকফাইফিলটিকে মূল হিসাবে শুরু করতে পারেন এবং টমক্যাট এবং সমস্ত কিছু ইনস্টল করতে পারেন। আমার অভিজ্ঞতা থেকে তারা তাদের চিত্রটিতে এটি পরিবর্তন করে। উদ্দেশ্যপ্রাপ্ত শেষ ব্যবহারকারীকে তারা যথাযথ দেখায় ব্যবহারকারীকে নির্দেশিকা নির্ধারণের অনুমতি দেওয়ার পক্ষে তা বোঝা যায়।


এটি সত্যিই কাজ করে! আপনি কি সুযোগ সহ জানেন যে কেন ADD এবং COPY কমান্ড মালিকদের সাথে ফাইল তৈরি করে root? তারা কেন USERনির্দেশকে আমলে নেয় না ?
nyi

1
ঠিক আছে, সাধারণত আপনি বেস চিত্রগুলি নির্দেশকে সেট করে দেখেন না, কারণ সিস্টেমে ব্যবহারকারী অ্যাকাউন্টগুলি কী হবে তা জানার কোনও আসল উপায় নেই। ডকারকে যা চালাতে হবে তা কেবল ফাইলগুলি রুট হিসাবে তৈরি করা সহজ হতে পারে। এটি একটি যুক্তিসঙ্গত বর্ধনের অনুরোধের মতো বলে মনে হচ্ছে, যদি ব্যবহারকারী নির্দেশাবলী অনুসারে কোন কিছু স্বয়ংক্রিয়ভাবে সেট করা থাকে তবে জিনিসগুলি স্বয়ংক্রিয়ভাবে মালিকানাধীন হতে পারলে ডকফায়াইলগুলি তৈরি করা সহজ হবে।
থেরেফোরিস্ট্রিভিয়াম

ধন্যবাদ .আমি আমাকে আমার দুর্দশা থেকে দূরে রাখি। জেনকিন্স ছবিতে আমাকে এসএসআই কী যুক্ত করতে হবে।
কোস্তাস ডেমিরিস

8

যেহেতু ডকার 17.09 --chownডকফাইলে অ্যাড / সিপিওয়াই অপারেশনগুলিতে পতাকা ব্যবহার করতে পারে ADD / COPY পদক্ষেপের মালিককে পরিবর্তন করতে আলাদা আলাদা রুন অপারেশন ছাড়াই ছেঁকে দেওয়া যা আপনার চিত্র হিসাবে আকার হিসাবে বাড়িয়ে তোলে। এটি ডিফল্ট মোড হিসাবে থাকায় ভাল হত অর্থাৎ ব্যবহারকারীদের ফাইল অনুলিপি করার অনুলিপি অনুলিপি করা ফাইলগুলিতে প্রয়োগ করা হয়। তবে ডকার দল পশ্চাদপদ সামঞ্জস্যতা ভাঙতে চায়নি এবং তাই একটি নতুন পতাকা প্রবর্তন করেছে।

COPY --chown=<user>:<group> <hostPath> <containerPath>

অন্যান্য বিকল্পগুলি হ'ল:

  1. চিত্রটি তৈরির আগে একটি স্টেজিং ফোল্ডারে অনুমতি পরিবর্তন করুন।
  2. মালিকানা পরিবর্তন করে এমন একটি বুটস্ট্র্যাপ স্ক্রিপ্টের মাধ্যমে ধারক চালান।
  3. স্কোয়াশ লেয়ার!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.