如果要保留对HTML文件和环境变量的更改,最好使用Dockerfile创建新映像。
FROM sameersbn/redmine:3.4.2 COPY modified.html /path/to/original.html ENV SOME_VARIABLE=value
然后建立图像 docker build -t local/redmine:3.4.2 . 并运行它 docker run ... local/redmine:3.4.2 。
docker build -t local/redmine:3.4.2 .
docker run ... local/redmine:3.4.2
另一个解决方案是运行原始图像并使用卷覆盖html文件: docker run ... -v /path/to/modified.html:/path/to/original.html sameersbn/redmine:3.4.2 。
docker run ... -v /path/to/modified.html:/path/to/original.html sameersbn/redmine:3.4.2
在我看来,后者是更好的解决方案,除非您需要使用已编辑的html内容分发图像。如果你发现写长命令很麻烦,你可以把它写成简单的脚本或者最好写一个 docker-compose.yml 文件并运行 docker-compose up 。
docker-compose.yml
docker-compose up
您对容器所做的更改,例如:添加新的包,如电子邮件服务器,添加vi / nano或其他包 的 不会持久 强> 这意味着每次你 的 停 强> 和 的 开始 强> 您的更改将是容器 的 丢失 强> 你必须重新做。
为了使它们持久化,你必须创建一个 Dockerfile 在那里你可以指定 的 从 强> 指令如:
FROM "sameersbn/redmine:3.4.2"
在这个Dockerfile中你必须指定你的附加包,例如:
RUN apt-get update && apt-get install xyz
哪个会安装所需的软件包
然后你必须建立图像:
docker build -t my_new_image:1.0.0 .
这将创建一个安装了所需包的新图像,因此您不会丢失它们。
此外,您可以使用以下命令添加HTML文件 的 复制 强> 要么 的 加 强> 命令或当前正在使用的命令 的 VOLUMES 强>
最后,每次好的解决方案都使用a时,必须始终传递ENV变量 docker-compose文件 它将包含运行容器的所有内容。
希望这可以帮助。