【问题标题】:Docker Ubuntu PATH won't saveDocker Ubuntu PATH 不会保存
【发布时间】:2021-04-16 19:05:31
【问题描述】:

我使用的是 Ubuntu 映像(Ubuntu 20.04)。本质上,我正在尝试永久修改我的 PATH 以便每次启动容器时我都不必手动编辑 PATH 来查找我安装的新项目。但是,无论我做什么,我都无法使更改永久化。我已经在图像中花费了相当长的时间,所以我非常想找到一个解决方案,这样我就不必重建整个东西了。

这是shell信息

#ps -p $$
  PID TTY          TIME CMD
    9 pts/1    00:00:00 sh 

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# PATH=$PATH:/kraken
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/kraken

#. ~/.profile

现在当我重新启动容器时:

#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

基本上,PATH 没有保存。我浏览了很多博客和堆栈,但找不到任何能坚持的东西。任何帮助将不胜感激。

【问题讨论】:

  • 你不能基于ubuntu创建你自己的镜像,但是使用预期的路径吗?如果我理解正确,您更改了容器内的路径并希望保持此状态。我认为用正确的路径启动容器会更容易。
  • @Fabien 感谢您的回复。我不相信这会奏效。 kraken 目录不是原始图像的一部分。它是我安装新软件的路径,所以如果不先创建目录就无法创建 PATH
  • 然后需要在镜像定义中(在DockerFile中)创建目录。您会在 Internet 上找到很多资源,这些资源将解释如何编写 DockerFile。但这个想法是,一旦你的容器运行,一切都应该处于所需的状态。这样您就可以并行启动多个容器,所有容器都具有所需的状态。
  • @Fabien 是否可以使用已构建的图像编辑 docker 文件。您根本无法永久添加 PATH 变量,这似乎有点愚蠢。
  • 这个想法是容器是短暂的。您可以同时运行多个基于同一映像的容器。想象一下,您在每个容器中定义了不同的路径值,然后启动另一个容器,使用哪个路径值?您可以将 DockerFile 基于现有图像,例如 Ubuntu 的图像,并添加命令以创建 kraken 目录 (mkdir),复制此目录中所需的内容,然后使用 env 命令将其添加到您的路径中。但如果您的问题是从正在运行的容器生成 DockerFile,我不这么认为。

标签: docker path ubuntu-20.04


【解决方案1】:

如果您希望容器以预定义的路径开始,您必须编写一个 DockerFile 来描述您的期望。 您可以尝试使用如下所示的 DockerFile:

FROM ubuntu:20.04
COPY kraken /kraken #If you have some content to put in the kraken dir on your Docker instance, use mkdir -p /kraken otherwise
ENV PATH="/kraken:${PATH}"  

如果您想为将来的容器保留该值,则在运行时直接在容器中更改路径不是解决方案。 Docker 容器被设计为短暂且可扩展的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2021-05-11
    • 2016-04-30
    • 1970-01-01
    • 2017-04-03
    相关资源
    最近更新 更多