Ubuntu 无法在生成阶段通过Dockerfile在docker容器中设置环境变量
我想在构建docker容器时将http代理和https代理设置为docker容器。因此,我在Dockerfile的开头用Ubuntu 无法在生成阶段通过Dockerfile在docker容器中设置环境变量,ubuntu,docker,fedora,Ubuntu,Docker,Fedora,我想在构建docker容器时将http代理和https代理设置为docker容器。因此,我在Dockerfile的开头用ENV关键字对其进行了配置。像这样的 FROM hub.docker.example.com/fedora:25 ENV http_proxy=http://example.com:911 ENV https_proxy=https://example.com:912 RUN \ . . my tasks, download something which n
ENV
关键字对其进行了配置。像这样的
FROM hub.docker.example.com/fedora:25
ENV http_proxy=http://example.com:911
ENV https_proxy=https://example.com:912
RUN \
.
.
my tasks, download something which need proxy
.
.
ENTRYPOINT sleep infinity
但是,当我运行容器并使用命令ENV | grep proxy
检查时,没有设置代理。我在Dockerfile上做错什么了吗
*这是一个fedora图像如果您仔细阅读文档,就会清楚地看到这一点 如果容器需要使用HTTP、HTTPS或FTP代理服务器, 您可以通过不同的方式对其进行配置:
- 在Docker 17.07及更高版本中,您可以将Docker客户端配置为 自动将代理信息传递给容器
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
对于旧版本
构建映像时,或者在创建或运行容器时使用--env标志时,可以将以下一个或多个变量设置为适当的值。这种方法使图像的便携性降低
我刚刚检查了你在fedora上的问题,ubuntu和ENV都设置好了。 我不明白你的步骤,但我可以张贴我的步骤,清楚地分开,这样你就可以告诉我其中哪一个步骤有问题: 我的Docker文件如下所示:
FROM fedora
ENV http_proxy=http://example.com:911
ENV https_proxy https://example.com:912
ENTRYPOINT sleep infinity
之后,使用最新的Fedora,在Dockerfile所在的同一目录中执行生成映像:
docker build -t yourimagename .
docker run -d --name yourcontainername yourimagename
docker exec -ti yourcontainername bash
使用env
检查环境变量,而不是env
:
env | grep http
https_proxy=https://example.com:912
http_proxy=http://example.com:911
最后,您在Dockerfile中正确定义了ENV。此外,您还可以不使用“=”符号来定义它们。两者都是正确的:
或
我想他不是想在cli中创建它,而是想在Dockerfile中创建它。因此,Dockerfile中的ENV优于cli中的--ENV,尽管它们产生的结果相同。此外,他的提案与HTTP服务器无关。HTTP服务器是一个结果,因为事实是Dockerfile中的ENV变量存在问题,这些变量显然不在容器中。共享您的确切Dockerfile可能会在我的组织提供的某些中间层中被删除。我使用
run-it/bin/sh
登录到该容器,然后尝试命令import
,它显示未找到command
。这是我设置环境变量的原因吗?ENV | grep proxy
是一个输入错误:)拉取图像怎么样docker pull hub.docker.example.com/fedora:25
是否有效?让我们从一开始就一步一步地尝试拉取映像成功,因此我可以看到带有docker映像的映像,并且它也可以启动和执行。在docker文件的其他步骤中,您是否有任何http_代理配置可以重写ENV?你能试试同样的Dockerfile而不需要中间步骤吗?参数仅在生成步骤中可用,但ENV应在容器启动后保持。
ENV http_proxy=http://example.com:911
ENV http_proxy http://example.com:911