ठीक है मैं अंत में - theprivileged मोड का उपयोग किए बिना इसे करने में कामयाब रहा।
मैं ubuntu सर्वर 14.04 पर चल रहा हूं और मैं नवीनतम क्यूडा (लिनक्स 13.04 64 बिट्स के लिए 6.0.37) का उपयोग कर रहा हूं।
तैयारी
अपने मेजबान पर एनवीडिया ड्राइवर और क्यूडा स्थापित करें। (यह थोड़ा मुश्किल हो सकता है इसलिए मैं आपको इस गाइड का अनुसरण करने का सुझाव दूंगा /ubuntu/451672/installing-and-testing-cuda-in-ubuntu-14-04 )
ध्यान दें: यह वास्तव में महत्वपूर्ण है कि आप होस्ट क्यूडा स्थापना के लिए आपके द्वारा उपयोग की जाने वाली फ़ाइलों को रखें
डोंकर डेमॉन को लेंक का उपयोग करके चलाने के लिए प्राप्त करें
हम विन्यास को संशोधित करने और डिवाइस तक कंटेनर पहुंच देने में सक्षम होने के लिए lxc ड्राइवर का उपयोग करते हुए डॉक डेमॉन को चलाने की आवश्यकता है।
एक बार उपयोग:
sudo service docker stop
sudo docker -d -e lxc
स्थायी कॉन्फ़िगरेशन
/ do / etc / default / docker में स्थित अपने docker कॉन्फ़िगरेशन फ़ाइल को संशोधित करें '-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
NVIDIA और CUDA ड्राइवर के साथ अपनी छवि बनाएं।
यहां 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 ड्राइवर को सक्रिय क्यों करते हैं? Lxc conf विकल्प का उपयोग करने के लिए जो हमें हमारे कंटेनर को उन उपकरणों तक पहुंचने की अनुमति देने की अनुमति देता है। विकल्प है: (मैं छोटी संख्या के लिए * का उपयोग करने की सलाह देता हूं क्योंकि इससे रन कमांड की लंबाई कम हो जाती है)
--lxc-conf = 'lxc.cgroup.devices.allow = c [प्रमुख संख्या]: [मामूली संख्या या *] rmm'
तो अगर मैं एक कंटेनर लॉन्च करना चाहता हूं (अपनी छवि का नाम क्यूडा है)।
docker run -ti --lxc-conf='lxc.cgroup.devices.allow = c 195:* rwm' --lxc-conf='lxc.cgroup.devices.allow = c 243:* rwm' cuda