I have a specific Python setting in the docker image called deep . I used python code to run
docker run --rm -it -v "$PWD":/app -w /app deep python some-code.py
For information, the -v and -w options should bind the local file to the current container path.
However, I cannot use matplotlib.pyplot . Let's say test.py is
import matplotlib.pyplot as plt plt.plot([1,2], [3,4]) plt.show()
I got this error.
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
When searching for a solution I have only one solution . I realized what I can do if
$ 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
My question is, instead of those that run bash by installing xauth and launching the Python container inside , can I do this setup with docker run so that I can just run the code outside the container ?
I tried
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
using the --entry , but that didn't work. Please, help.