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

时间:2018-11-23 09:57:08

标签: docker junit5 testcontainers

我想运行测试以验证使用TestContainers正确执行Flyway迁移。

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

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

PS:我无权访问CI主机。

2 个答案:

答案 0 :(得分:0)

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

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

,然后检查环境变量是否为空或包含ID。

答案 1 :(得分:0)

与此相关的变量有很多(“调用用户是否具有权限”是一项重要检查;“我实际上可以访问的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