将主机环境variables传递给dockerfile

我如何将主机环境variables(如用户和主机名)传递给dockerfile?

例如,如果我的用户名是taha

 echo $USER taha 

我如何编写我的Docker文件来获得相同的输出?

 FROM centos:centos7 ARG myuser=$USER CMD echo $myuser 

我遇到了同样的问题。 我的解决scheme是提供一个docker-compose.yml中的variables,因为yml支持使用环境variables。

在我看来,这是对我来说最有效的方式,因为我不喜欢在命令行中使用类似docker run -e myuser=$USER . . .反复inputdocker run -e myuser=$USER . . . docker run -e myuser=$USER . . .

声明ENV myuser=$USER将不起作用,在容器中, $myuser将被设置为null

所以你的docker-compose.yml可能看起来像这样:

 version: '3' services: app: build: context: . dockerfile: Dockerfile environment: - "myuser=${USER}" 

并可以使用简短的命令docker-compose up运行

要检查variables是否已被应用,运行docker exec -it container-name printenv来列出容器中的所有variables。

当你启动Docker容器时,你可以使用-e选项来传递环境variables,如下所示:

 docker run -it <image> -e USER=$USER /bin/bash 

您需要在dockerfile中使用ENV设置

ENV myuser=$USER

https://docs.docker.com/engine/reference/builder/#env