【问题标题】:Docker - List environment variables defined in dockerfile from within a containerDocker - 从容器中列出在 dockerfile 中定义的环境变量
【发布时间】:2020-04-07 03:41:24
【问题描述】:

有没有办法从容器中列出dockerfile(或docker-compose.yml)中定义的所有环境变量,但仅限 dockerfile 中定义的那些,没有像PATHPS1TERM、...这样的变量??

我的容器是来自 webdevopsphp-apache-dev 容器,它基于 ubuntu 映像。

【问题讨论】:

  • 无法判断环境变量来自容器内的何处。如果您有权访问 Docker 套接字,则可以docker inspect 容器以获取 Docker 定义的环境变量列表,但通常不会将 Docker 套接字公开到容器中。
  • 有一个 hack,使用 undocker 提取 Dockerfile 并从那里读取 ENV。

标签: docker ubuntu docker-compose environment-variables dockerfile


【解决方案1】:

你不应该仅仅为了ENV而分配root权限,最好打印所有env并排除你不感兴趣的系统环境。

最好的选择是仅使用 Dockerfile 中定义的 grep 打印所有从 WEB_ 开始的 env,因为您提到的 Dockerfile ENV 都从 WEB_* 开始。

ENV WEB_DOCUMENT_ROOT=/app \
    WEB_DOCUMENT_INDEX=index.php \
    WEB_ALIAS_DOMAIN=*.vm \
    WEB_PHP_TIMEOUT=600 \
    WEB_PHP_SOCKET=""
ENV WEB_PHP_SOCKET=127.0.0.1:9000
ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

所以这只会打印 Dockerfile ENV。

docker run -it --rm webdevops/php-apache-dev printenv | grep -E "^WEB"

或者排除一些变量可以试试

docker run -it --rm webdevops/php-apache-dev printenv | grep -vE "^PATH|^HOME|^TERM" 

这不会显示您提到的您不感兴趣的 ENV。

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 2016-03-07
    • 2019-09-11
    • 2016-05-30
    • 1970-01-01
    • 2021-06-12
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多