一些已安装的软件包在容器运行时不可用

时间:2019-02-23 11:26:07

标签: docker jenkins

我在使用以下Dockerfile时遇到了一些困难:https://github.com/IdanAdar/test-docker/tree/master

当我在本地运行图像时,请执行以下步骤:

  1. docker run --privileged --dns 9.0.128.50 --dns 9.0.130.50 -d -P --name slave alpine-agent:0.0.1
  2. docker ps并复制端口号
  3. ssh -p <port number> jenkins@localhost
  4. 密码:jenkinspass

我能够运行几乎所有已安装的工具,并且存在以下问题:

    找不到
  1. sonar-scanner
  2. PATH不包含来自Dockerfile的任何PATH修改

当我在Jenkins中作为代理运行映像时,几乎所有安装的工具都在工作,并且存在以下问题:

  1. sonar-scanner获得sonar-scanner: Permission denied
  2. 找不到
  3. ibmcloud(但在usr/local/ibmcloud中可用)
  4. PATH不包含来自Dockerfile的任何PATH修改
  5. Jenkins中的
  6. sh块因以下命令而失败:
array=(some text some text ...)

使用:

syntax error: unexpected "("

我很难理解为什么会发生这些问题以及如何解决它们。

1 个答案:

答案 0 :(得分:1)

您已经使用PATH命令为用户配置了ENV变量,该变量用于容器运行-可能是root而不是jenkins。您的Dockerfile包含:

COPY skel/ /home/jenkins

因此请使用.bashrc中的skel/PATH用户配置jenkins(在图像中为/home/jenkins/.bashrc)。

Permission denied问题:检查二进制文件是否具有jenkins用户的执行权限。

syntax error: unexpected "("问题:/bin/sh中的docker:stable-dindbusybox,它不理解此语法(请参阅ls -l /bin/sh)。在Dockerfile(apk add bash)中安装bash并将“ /bin/sh”指向“ /bin/bash”。例如:

mv /bin/sh /bin/sh.bak
ln -s /bin/bash /bin/sh