docker中使用matplotlib显示图片

使用了的是nvidia-docker,nvidia cloud的tensorflow(python3)镜像,然后发现用matplotlib显示不了图片

  1. 需要安装几个依赖库并重新安装matplotlib
    sudo apt-get install tcl-dev tk-dev python3-tk
    pip uninstall matplotlib
    pip install matplotlib
    这样可以让matplotlib的backend为’Tkagg‘,具体参考Matplotlib无法显示图像的问题
  2. 这样对容器进行了修改,所以要保存更改到镜像(方便下次使用镜像)
    先用docker ps命令查看修改后的容器ID和对应的image。
    然后保存改动
    docker commit [CONTAINER ID] [IMAGE]
    具体参考docker保存对容器的修改
  3. 把图片显示到本地显示器
    sudo nvidia-docker run -it --shm-size=2g --ulimit memlock=-1 --ulimit stack=67108864 --net=host --rm --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix -v /media/asic/asic/tensorflow_docker20181227:/tf1228 tf/test
    这里面:
    –net=host是用来联网的(用主机的网)
    –env=“DISPLAY” 是修改容器中的环境变量DISPLAY
    -v /tmp/.X11-unix:/tmp/.X11-unix 是为了共享本地unix端口
    解释:
    原理上可以把docker镜像看做一台没配显示器的电脑,程序可以运行,但是没地方显示。
    而linux目前的主流图像界面服务X11又支持 客户端/服务端(Client/Server)的工作模式
    只要在容器启动的时候,将 『unix:端口』或『主机名:端口』共享给docker,docker 就可以通过端口找到显示输出的地方,和linux系统共用显示
    具体原理可参考Docker容器图形界面显示(运行GUI软件)的配置方法

你可能感兴趣的:(docker中使用matplotlib显示图片)