【问题标题】:Where I can find all variables of docker image在哪里可以找到 docker image 的所有变量
【发布时间】:2021-08-17 10:25:00
【问题描述】:

拉动后我可以在哪里找到变量或 docker 图像 - 就像 mongo 图像有类似 MONGO_INITDB_ROOT_USERNAME 的变量,但我必须在网络资源上找到它们。是否有某种命令可以显示变量,例如 --help 或示例 yaml 文件或任何包含这些变量信息的文件?

或者至少打印整个dockerfile,但如果在途中设置了填充变量占位符...

【问题讨论】:

  • 通常在终端中运行printenv 会显示所有环境变量。所以也许你可以在你的容器中运行它?
  • ** 这可能取决于 mongo 图像构建在什么之上。它可能无法正常工作,嗯
  • @DimitarHristov 是的,如果我不设置一些变量(这可能是至关重要的),那么它没有列出,谢谢你的回答,但不是

标签: docker yaml dockerfile


【解决方案1】:

我会使用docker exec 在容器内获取外壳并使用printenv,如下所示:

❯ docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED        STATUS         PORTS                                             NAMES
a35281f615b1   adminer                            "entrypoint.sh docke…"   2 months ago   Up 6 hours     0.0.0.0:8090->8080/tcp, :::8090->8080/tcp         data-mock_adminer_1
016b075fee00   quay.io/keycloak/keycloak:latest   "/opt/jboss/tools/do…"   2 months ago   Up 5 seconds   8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   docker-scripts_keycloak_1
0409951e3c5f   mysql:5.7                          "docker-entrypoint.s…"   2 months ago   Up 5 seconds   3306/tcp, 33060/tcp                               docker-scripts_mysql_1
❯ docker exec -it 016 /bin/bash
bash-4.4$ printenv
LAUNCH_JBOSS_IN_BACKGROUND=1
LANG=en_US.UTF-8
PROXY_ADDRESS_FORWARDING=false
HOSTNAME=016b075fee00
JDBC_MARIADB_VERSION=2.5.4
DB_USER=keycloak
container=oci
JDBC_POSTGRES_VERSION=42.2.5
DB_ADDR=mysql

【讨论】:

  • 是的,但是当我不设置一些我应该设置的变量(可选变量)时,这个变量就没有列出......
【解决方案2】:

@HenriDeBel 的回答很好,但需要从图像中旋转一个容器(带有docker run 左右)。

为避免这种情况(如果您感兴趣的环境变量已使用ENV 命令添加),请注意您可以仅依靠docker inspect 列出这些环境变量。

例如,可以使用以下命令(受this answer by @VonC − How to get ENV variable when doing Docker Inspect 启发)以 JSON 格式获取它们:

$ sudo docker inspect -f '{{json .Config.Env}}' coqorg/base:4.07.1-flambda
["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","OPAM_VERSION=2.0.8","NJOBS=2","OPAMPRECISETRACKING=1","COMPILER=4.07.1+flambda","OCAMLFIND_VERSION=1.8.1","DUNE_VERSION=2.8.5","ZARITH_VERSION=1.12"]

【讨论】:

  • 是的,但是当我不设置一些我应该设置的变量(可选变量)时,这个变量就没有列出......
  • 我不确定你的意思是什么:如果你不设置变量,你怎么能得到它的值?
  • 无论如何,如果你在 bash 中编写脚本,也许你正在寻找类似 @​​987654327@ 的东西?
  • 根据github.com/docker-library/docs/tree/master/mongo 如果我将设置变量MONGO_INITDB_ROOT_USERNAME 和其他新的数据库用户将被创建并且在运行你的命令docker inspect -f '{{json .Config.Env}}' mongo 输出中没有这样的变量["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.12","JSYAML_VERSION=3.13.1","GPG_KEYS=20691EEC35216C63CAF66CE1656408E390CFB1F5","MONGO_PACKAGE=mongodb-org","MONGO_REPO=repo.mongodb.org","MONGO_MAJOR=4.4","MONGO_VERSION=4.4.6"] 我想要如果可能的话,看看这个变量,thx
  • 我不这么认为:您想要的功能主要与 Docker 解相关:假设您感兴趣的基本映像的入口点是 Java 程序左右,并读取特定的如果设置了环境变量,则其行为会有所不同。您如何从作为入口点的已编译二进制文件中提取该信息?从编程上讲,我不明白如何。实际上,应该只浏览基本图像文档(如果有的话:)
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2017-10-08
相关资源
最近更新 更多