मेरे पास deep
नामक डॉकर छवि में पायथन की एक निश्चित सेटिंग है। मैं अजगर कोडमैं डॉकर कंटेनर में matplotlib.pyplot का उपयोग कैसे कर सकता हूं?
docker run --rm -it -v "$PWD":/app -w /app deep python some-code.py
जानकारी के लिए, -v
और -w
विकल्पों रहे कंटेनर के लिए वर्तमान पथ में एक स्थानीय फ़ाइल से जोड़ने के लिए चलाने के लिए इस्तेमाल किया।
हालांकि, मैं matplotlib.pyplot
का उपयोग नहीं कर सकता। मान लें कि test.py
import matplotlib.pyplot as plt
plt.plot([1,2], [3,4])
plt.show()
मुझे यह त्रुटि मिली।
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 3147, in plot
ax = gca()
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 928, in gca
return gcf().gca(**kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 578, in gcf
return figure()
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 527, in figure
**kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 84, in new_figure_manager
return new_figure_manager_given_figure(num, figure)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 92, in new_figure_manager_given_figure
window = Tk.Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1818, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
समाधान खोज के साथ
, मैं केवल एक ही समाधान हो रहा है। मैं पता लगा रहा bash
की शुरूआत उन सभी की अगर
$ xauth list
xxxx/unix:0 yyyy 5nsk3hd # copy this list
$ docker run --rm -it -v "$PWD":/app -w /app \
--net=host -e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
deep bash
inside-container$ xauth add xxxx/unix:0 yyyy 5nsk3hd # paste the list
inside-container$ python test.py # now the plot works!!
मेरा प्रश्न है क्या कर सकते हैं, बजाय, xauth
की स्थापना, और कंटेनर के अंदर अजगर चल रहा है, मैं ऐसे सेटिंग docker run
साथ कि मैं सिर्फ चला सकते हैं कर सकते हैं तो कंटेनर के बाहर कोड?
मैं
docker run --rm -it -v "$PWD":/app -w /app \
--net=host -e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "xauth add xxxx/unix:0 yyyy 5nsk3hd" \
deep python test.py
की कोशिश की --entry
पैरामीटर का उपयोग कर, लेकिन यह काम नहीं किया। कृपया मदद करे।
आप आगे प्रदर्शन –
SSH सकता है '-e' वैसे, पर्यावरण चर रहा है। आपका आदेश '--entrypoint' –