【发布时间】:2020-07-03 07:40:39
【问题描述】:
例如,我有一个 dockerfile,它有一个 ENTRYPOINT 命令:
From alpine:latest
WORKDIR /app/
RUN apk add --no-cache bash && echo 'echo foo:$FOO' > echo.sh && cat echo.sh && chmod a+x echo.sh
ENTRYPOINT ["sh", "-c", "_FOO=$FOO ./echo.sh && unset FOO && sleep 30"]
然后我运行这个 docker 并传递 env FOO 和值 bar:
$ docker run --rm -e FOO=bar --name=demo docker-image-demo
如何取消设置docker run -e FOO=bar命令提供的容器中的环境变量FOO?
$ docker exec -it demo bash
$ bash-5.0$ echo $FOO
bar
我尝试使用exec 将容器进程替换为bash,但出现一些错误:
ENTRYPOINT ["exec", "sh", "-c", "_FOO=$FOO ./echo.sh && unset FOO && sleep 30"]
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:344:启动容器进程导致“exec:“exec”:$PATH 中找不到可执行文件:未知。
【问题讨论】:
-
我自己从来不需要这个。你隐藏它的目的是什么?如果有人已经在容器内,他们一定知道那个值(大概只有一个秘密值得隐藏;)。
-
@mirekphd 这个 FOO 存储了 http-server 的秘密。如
docker run -e PASSWORD和./http-server && unset PASSWORD && sleep 300000
标签: docker