ডকার উবুন্টু 14.04 ধারকটিতে ইউনিকোডে লোকেলগুলি কীভাবে কনফিগার করবেন?


30

আমি ডকার ব্যবহার করে একটি উবুন্টু ট্রাস্টি কনটেইনার ইনস্টল করেছি এবং আমি এটির সাথে সংযোগ স্থাপন করার পরে দেখতে পাচ্ছি যে লোকেলটি কেবল সর্বনিম্ন সেট করা আছে:

sudo docker run -i -t <id> /bin/bash
root@<id>:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

আমার একটি ইউনিকোড লোকেল ব্যবহার করা প্রয়োজন (উদাহরণস্বরূপ ইউএস ইংরেজি, en_US.UTF-8) ,

আমি / ইত্যাদি / ডিফল্ট / স্থানীয় ফাইল সম্পাদনা করার চেষ্টা করেছি এবং এটি ভিতরে রেখেছি:

# cat /etc/default/locale 
LANG=en_US.UTF-8

তবে ধারকটি রেখে আবার ফিরে আসার পরেও লোকালটি এখনও সঠিকভাবে সেট করা হয়নি।

আমি update-localeকোনও সাফল্য ছাড়াই কমান্ডটি ব্যবহার করার চেষ্টা করেছি :

root@cab13a6abe4f:/# update-locale LANG=en_US.UTF-8
root@cab13a6abe4f:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

আমার স্থানীয় কনফিগারেশনে, আমার কাছে নিম্নলিখিত কনফিগারেশন রয়েছে:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

আমার ডকারের পাত্রে কীভাবে আমি একই জিনিস রাখতে পারি?

আগাম ধন্যবাদ!

উত্তর:


19

/etc/default/localeফাইল পিএএম দ্বারা লোড করা হয়; দেখতে /etc/pam.d/loginউদাহরণস্বরূপ। তবে ডকার পাত্রে কোনও কমান্ড চালানোর সময় পিএএম-কে অনুরোধ করা হয় না। লোকেলটি কনফিগার করতে, কেবল আপনার ডকফাইলে প্রাসঙ্গিক পরিবেশের পরিবর্তনশীল সেট করুন। উদাহরণ:

FROM ubuntu:trusty
ENV LANG en_US.UTF-8
CMD ["/bin/bash"]

1
এটা কাজ করেছে! পিএএম সম্পর্কেও ব্যাখ্যার জন্য ধন্যবাদ। শেষ অবধি, আমাকে কেবল চিত্রটি পুনর্নির্মাণ করতে হবে (ব্যবহার করে sudo docker build .) এবং এটি দুর্দান্ত কাজ করে।
পিয়ের

53

আমি এটি আমার ব্যবহার Dockerfile:

# Set the locale
RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8

কেউ ওয়ান ENV-লাইনার ব্যবহার করতে পারেন :

RUN locale-gen en_US.UTF-8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'

2
এটা সঠিক উত্তর. locale -aদেখায় যে লোকেলটি পুরো বেস ইমেজ থেকে সরানো হয়েছে। locale-genএটি আবার উত্পন্ন করে এবং এটি উপলব্ধ করে।
আবে ভোলেকার

এই কোথায় dockerfile? এটি ডাউনলোড করা চিত্রের জন্য সম্পাদনা করা যেতে পারে?
মিখাইল ব্যাটার

@ মিখাইলব্যাটসর আপনি Dockerfileআপনার প্রকল্প ডিরেক্টরিতে একটি তৈরি করতে পারেন এবং FROMবিদ্যমান চিত্রটি প্রসারিত করতে নির্দেশটি ব্যবহার করতে পারেন । তারপরে কেবল উল্লিখিত রেখাগুলি সংযোজন করুন। Dockerfile এখানে
সিজেরাস 21

3
আমি নিম্নলিখিত ত্রুটির করেছেন: locale-gen: not found। সমাধান: stackoverflow.com/a/39761477/1743367
JustAC0der

7

চেষ্টা

ENV LANG C.UTF-8

আপনি যদি unsupported locale settingত্রুটিটি পান এবং কোনও নতুন লোকেল ইনস্টল করতে না চান।


আপনি একক রানের জন্য চিত্রটি পুনর্নির্মাণও এড়াতে পারবেন: docker-compose run --rm -e TERM=xterm -e LANG=C.UTF-8 worker bash
cmoran92

1

আমি এটি চেষ্টা করেছিলাম এবং এটি Dockerfileআমার ছবি যোগ করার পরে আমাকে সহায়তা করেছিল helped

ENV LANG='en_GB.UTF-8' LANGUAGE='en_GB:en' LC_ALL='en_GB.UTF-8'
RUN echo en_GB.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen

এবং চালান

docker-compose build
docker-compose up -d
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.