当前位置: 首页 > 知识库问答 >
问题:

使用环境变量检测主机上的Docker运行时

漆雕令秋
2023-03-14

我想运行测试,使用测试容器验证飞行方式迁移的正确执行。

使用 JUnit5,我想仅在运行 Docker 守护程序(@EnabledIfSystemProperty(命名为 “docker...”,匹配 = “”))https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution-system-properties 的主机上启用这些测试。

我的问题是:我如何使用环境变量检查Docker守护进程在主机上是否可用?

PS:我无法访问CI主机。

共有2个答案

郑高驰
2023-03-14

这涉及到几个变量(“调用用户是否有权限”是一个重要的检查;“我可以访问的Docker实际上是本地的吗”是另一个有趣的问题)并且不会有一个神奇的环境变量告诉你这个问题。

我可能会尝试运行一次性容器;类似的东西

docker run --rm busybox /bin/true

如果成功,请继续进行其他基于 Docker 的端到端测试。

基于@NinaHashemi的答案,如果它必须是一个环境变量,并且您可以在测试之前/周围运行shell脚本(任何POSIX shell,不一定是bash),那么您可以运行

if docker run --rm busybox /bin/true >/dev/null 2>&1; then
    export IS_DOCKER_RUNNING=yes
fi
隆睿
2023-03-14

如果在此之前可以运行bash,则可以运行:

export IS_DOCKER_RUNNING =`cat /var/run/docker.pid`

并检查环境变量是空的还是包含id。

 类似资料:
  • 问题内容: 我正在尝试设置一个postgres容器,并希望使用以下命令设置postgres登录名: 所以我像这样创建了docker-compose.yml 我还尝试了将环境变量声明为db部分的其他语法: 但是这些选项似乎都不起作用,因为无论出于什么原因,无论何时我尝试使用各种连接字符串连接到postgres数据库: 与抱怨没有用户数据库相反,它们都给我身份验证失败。 问题答案: 您收到的身份验证错

  • 我试图在我的Svelte应用程序中为APIendpoint使用docker compose环境变量,但它没有定义。 rollup.config 苗条

  • 问题内容: 我已经设置了带有多个docker容器的服务器,可以使用jwilders nginx reversre proxy 访问。运行容器时,可以设置VIRTUAL_HOST环境变量。在容器启动后,我一直试图找出一种更新这些方法的方法。 解决方案在这里发布: 您只需停止docker daemon并在以下位置更改容器配置 要求您停止docker守护程序,但我不想不必诉诸于此。 另一个在这里,使用d

  • 我在使用dotnet core 3.1和visual Studio生成的DockerFile时遇到了一些问题。 我试图通过Dockerfile将密码放入docker的环境变量中,但当我使用读取varibale时,该变量为NULL。 提前致谢

  • 问题内容: 如何将主机环境变量(例如用户名和主机名)传递给dockerfile? 例如,如果我的用户名是: 如何编写Docker文件以获得相同的输出? 问题答案: 我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。 我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 在容器中,声明将无效,将设置为

  • 我遇到了几个问题。以下是我的docker文件: vue.js应用程序的Dockerfile。 是通过节点的对象存储和访问的,似乎是在生成时传入的。 我是否可以访问vue.js应用程序中docker-compose.yml中设置的容器级变量?此外,是否可以将这些变量作为参数与一起传递?如果你需要任何澄清/更多信息,请告诉我。