【问题标题】:Can docker help me avoid the reinstallation process of libraries everytime I ssh to a new machine?每次我 ssh 到新机器时,docker 可以帮助我避免安装库的过程吗?
【发布时间】:2020-03-09 02:48:24
【问题描述】:

我有一个 python 库列表,每次我在校园的这台新计算机上使用 ssh 时都需要重新安装。我怎样才能确保我只需要创建一个文件/写一个命令,这样我就不必重复这个重新安装过程? Docker 是一个很好的方法吗?

我有一个包含我需要的所有库的 requirements.txt 文件

  1. 熊猫
  2. matplotlib
  3. 海运
  4. numpy
  5. sklearn
  6. opencv-python

该项目有各种 Jupyter 笔记本,需要上述导入才能运行。

我对 Dockerfiles 和 Docker 容器不太熟悉:

FROM my/base
ADD . /srv
RUN pip install -r requirements.txt
RUN python sunflower.ipynb

ENTRYPOINT ["run_server"]

我是否可以将我的整个项目包装在一个类似于上面所见的 Dockerfile 中?我必须通过将我机器上的一个端口连接到 dgx1 上的相应端口来 ssh 到一台名为 dgx1.cc.gatech.edu 的机器。

8088:localhost:8088 username@dgx1.cc.gatech.edu

【问题讨论】:

    标签: docker ssh dockerfile


    【解决方案1】:

    如果您可以运行任何 Docker 命令,您就可以轻松获得对整个系统的不受限制的 root 访问权限。您极不可能像您描述的那样在共享系统上运行 Docker 命令。 Docker 在这里还有其他几个缺点,对于您描述的用例,我不推荐它。

    另一方面,Python requirements.txt 文件本身就足以列出您需要的依赖项。您可以create a virtual environment 并将这些软件包安装到其中,它们将在您的控制之下并与该系统上安装的任何其他内容隔离。使用它只涉及:

    # Create the virtual environment
    python3 -m venv ./sunflower
    
    # Make it be your current Python ("activate" it)
    . ./sunflower/bin/activate
    
    # Install the packages you need
    pip3 install -r requirements.txt
    
    # Run your script
    python3 sunflower.ipynb
    
    # Switch back to the system Python
    deactivate
    

    如果你反复 ssh 进入同一个系统,你可以重复使用同一个虚拟环境;重新运行activate 命令,包就已经安装好了。

    (如果您没有更特殊的需求,当前的official Python tooling recommendation 将使用Pipenv,但它使用与requirements.txt 文件不同的包列表文件设置。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多