覆盖基础 docker 映像中的 ENV 变量

Hel*_*lad 5 docker dockerfile

我有一个基本的 docker 镜像,用 Dockerfile 称它为 docker-image

FROM Ubuntu
ENV USER default
CMD ['start-application']
Run Code Online (Sandbox Code Playgroud)

一个自定义的 docker 镜像,基于 docker-image

FROM docker-image
ENV USER username
Run Code Online (Sandbox Code Playgroud)

我想在不更改基本映像的情况下覆盖 USER 环境变量(在应用程序启动之前),这可能吗?

Von*_*onC 3

如果你无法构建另一个镜像,如“ Dockerfile Overriding ENV变量”中所述,你至少可以在启动容器时修改它docker run -e

参见“ ENV(环境变量)

操作员可以使用一个或多个 -e 标志来设置容器中的任何环境变量,甚至覆盖上面提到的那些,或者已经由开发人员使用 Dockerfile 定义ENV

$ docker run -e "deep=purple" -e today --rm alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=d2219b854598
deep=purple   <=============
Run Code Online (Sandbox Code Playgroud)