ঠিক আছে আমি অবশেষে --privileged মোডটি ব্যবহার না করে এটি করতে পেরেছি।
আমি উবুন্টু সার্ভার 14.04 এ চলছে এবং আমি সর্বশেষতম চুদা (লিনাক্স 13.04 64 বিটের জন্য 6.0.37) ব্যবহার করছি।
প্রস্তুতি
আপনার হোস্টে এনভিডিয়া ড্রাইভার এবং চুদা ইনস্টল করুন। (এটি সামান্য কৌশলযুক্ত হতে পারে তাই আমি আপনাকে এই গাইডটি অনুসরণ করার পরামর্শ দেব /ubuntu/451672/installing-and-testing-cuda-in-ubuntu-14-04 )
মনোযোগ: হোস্ট চুদা ইনস্টলেশনের জন্য আপনি যে ফাইলগুলি ব্যবহার করেছেন সেগুলি রাখা আপনার পক্ষে সত্যই গুরুত্বপূর্ণ
Lxc ব্যবহার করে ডকার ডেমন পান e
কনফিগারেশনটি সংশোধন করতে এবং ডিভাইসটিতে ধারকটিকে অ্যাক্সেস দিতে সক্ষম হতে আমাদের lxc ড্রাইভার ব্যবহার করে ডকার ডিমন চালাতে হবে।
এক সময় ব্যবহার:
sudo service docker stop
sudo docker -d -e lxc
স্থায়ী কনফিগারেশন
/ ইত্যাদি / ডিফল্ট / ডকারে অবস্থিত আপনার ডকার কনফিগারেশন ফাইলটি সংশোধন করুন '-e lxc' যুক্ত করে লাইনটি DOCKER_OPTS পরিবর্তন করুন এখানে পরিবর্তনের পরে আমার লাইনটি এখানে
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -e lxc"
তারপরে ডিমনটি পুনরায় চালু করুন
sudo service docker restart
ডিমন কার্যকরভাবে lxc ড্রাইভার ব্যবহার করে কিনা তা কীভাবে পরীক্ষা করবেন?
docker info
এক্সিকিউশন ড্রাইভার লাইনের মতো দেখতে হবে:
Execution Driver: lxc-1.0.5
আপনার চিত্রটি এনভিআইডিএ এবং সিইউডিএ ড্রাইভার দিয়ে তৈরি করুন।
CUDA- র সামঞ্জস্যপূর্ণ চিত্রটি তৈরি করতে এখানে একটি বেসিক ডকফায়াইল রয়েছে।
FROM ubuntu:14.04
MAINTAINER Regan <http://stackoverflow.com/questions/25185405/using-gpu-from-a-docker-container>
RUN apt-get update && apt-get install -y build-essential
RUN apt-get --purge remove -y nvidia*
ADD ./Downloads/nvidia_installers /tmp/nvidia > Get the install files you used to install CUDA and the NVIDIA drivers on your host
RUN /tmp/nvidia/NVIDIA-Linux-x86_64-331.62.run -s -N --no-kernel-module > Install the driver.
RUN rm -rf /tmp/selfgz7 > For some reason the driver installer left temp files when used during a docker build (i don't have any explanation why) and the CUDA installer will fail if there still there so we delete them.
RUN /tmp/nvidia/cuda-linux64-rel-6.0.37-18176142.run -noprompt > CUDA driver installer.
RUN /tmp/nvidia/cuda-samples-linux-6.0.37-18176142.run -noprompt -cudaprefix=/usr/local/cuda-6.0 > CUDA samples comment if you don't want them.
RUN export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 > Add CUDA library into your PATH
RUN touch /etc/ld.so.conf.d/cuda.conf > Update the ld.so.conf.d directory
RUN rm -rf /temp/* > Delete installer files.
আপনার ইমেজ চালান।
প্রথমে আপনাকে আপনার ডিভাইসের সাথে যুক্ত বড় সংখ্যাটি সনাক্ত করতে হবে। নিম্নলিখিত কমান্ডটি করা সহজ উপায়:
ls -la /dev | grep nvidia
যদি ফলাফলটি ফাঁকা থাকে, তবে হোস্টের মধ্যে একটি নমুনা ব্যবহার করে কৌশলটি করা উচিত। ফলাফলটি
দেখতে এমন হওয়া উচিত
যেমন আপনি দেখতে পাচ্ছেন গ্রুপ এবং তারিখের মধ্যে 2 সংখ্যার একটি সেট রয়েছে। এই 2 নম্বরগুলিকে প্রধান এবং অপ্রধান সংখ্যা বলা হয় (সেই ক্রমে লেখা) এবং একটি ডিভাইস ডিজাইন করুন। আমরা সুবিধার জন্য কেবল প্রধান সংখ্যাগুলি ব্যবহার করব।
কেন আমরা এলএক্সসি ড্রাইভার চালিত করব? Lxc conf বিকল্পটি ব্যবহার করতে যা আমাদের কনটেইনারটিকে সেই ডিভাইসগুলিতে অ্যাক্সেস করার অনুমতি দেয়। বিকল্পটি হ'ল: (আমি সংখ্যালঘু সংখ্যার জন্য * ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি রান কমান্ডের দৈর্ঘ্য হ্রাস করে)
--lxc-conf = 'lxc.cgroup.devices.allow = c [প্রধান সংখ্যা]: [গৌণ সংখ্যা বা *] rwm'
সুতরাং আমি যদি কোনও ধারক চালু করতে চাই (মনে হয় আপনার চিত্রের নাম চুদা)।
docker run -ti --lxc-conf='lxc.cgroup.devices.allow = c 195:* rwm' --lxc-conf='lxc.cgroup.devices.allow = c 243:* rwm' cuda