gpt4 book ai didi

docker - 如何从在 docker 容器中运行的脚本获取 matplotlib 图形以在 OS X 上显示

转载 作者:行者123 更新时间:2023-12-02 17:49:02 25 4
gpt4 key购买 nike

正如标题所述,我有一个 docker 容器,使用 ubuntu 16.04 基础镜像,安装了 matplotlib 和各种依赖项。

我知道我可以使用 jupyter notebook 或其他东西将绘图写入文件或其他东西,但是我特别希望能够放入容器内的 python shell 并从那里调用 plt.plot() 。

我已经阅读了有关设置显示变量等的内容,但到目前为止还没有多少运气。

任何帮助,将不胜感激。

最佳答案

基于使用 Ubuntu 容器和安装了 Python3/Matplotlib* 的原始问题的设置,您将不需要 jupyter或笔记本来保存数字。但是,您必须run使用 -v 安装卷的容器.
下面举例说明如何在容器中直接进入Python终端并运行plt.plot() .然后,您可以将该图保存到已安装的卷并在主机上显示该图:

docker run -it --name ubuntu_python -v /output/:/output/ <your_ubuntu_image> /bin/bash
这会将您放入带有 bash 的容器中终端,您可以从中安装依赖项,运行 python3等。如果您想在退出后访问容器(具有相同的已安装卷),您始终可以使用(如@ssnk 所述):
docker exec -it ubuntu_python /bin/bash
运行后 python3 (或 python )在容器中,您将拥有一个 python shell,您可以从中生成图形并将其保存到安装卷 /output :
import matplotlib.pyplot as plt

x = list(range(1,10))
y = list(range(1,10))

fig1 = plt.figure()
plt.plot(x,y)

# increase your pixel density when saving the image
# (optional, but it's useful when you can't inspect the image beforehand with plt.show)
your_dpi = 200

out_path = '/output/your_filename.png'

plt.savefig(out_path, dpi=your_dpi)
然后您可以在主机上查看该文件为 /output/your_filename.png .在不使用 Docker 的显示变量的情况下,这是查看在容器内创建的图形的可靠方法(为了交互性,您可以尝试 jupyter)。

*旁白:如果您不想在每次启动容器时手动安装依赖项(例如,如果您需要挂载一个新卷),这里有一个快速示例,该示例使用预先安装的依赖项创建一个 Docker 容器 conda :
创建 Dockerfile.condaentrypoint.sh如下:
# Dockerfile.conda

FROM ubuntu:bionic

RUN apt-get update -y \
&& apt upgrade -y \
&& apt install -y wget

RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& mkdir /root/.conda \
&& bash Miniconda3-latest-Linux-x86_64.sh -b \
&& rm -f Miniconda3-latest-Linux-x86_64.sh

ENV PATH /root/miniconda3/bin:$PATH

### Add your packages here ###
RUN conda install -y matplotlib

# Set up runtime

COPY entrypoint.sh /entrypoint.sh
RUN chmod 755 /entrypoint.sh

ENTRYPOINT ["/bin/bash", "entrypoint.sh"]
# entrypoint.sh

#!/bin/sh
conda init bash
/bin/bash #refresh the shell to load conda
conda activate base
通过在同一目录中运行它来构建镜像:
docker build . -t username/ubuntu:conda -f Dockerfile.conda
您现在可以通过命名图像 username/ubuntu:conda 来运行您的 matplotlib Python 容器。而不是每次都安装在shell中。

关于docker - 如何从在 docker 容器中运行的脚本获取 matplotlib 图形以在 OS X 上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com