我在使用以下Dockerfile时遇到了一些困难:https://github.com/IdanAdar/test-docker/tree/master
当我在本地运行图像时,请执行以下步骤:
docker run --privileged --dns 9.0.128.50 --dns 9.0.130.50 -d -P --name slave alpine-agent:0.0.1
docker ps
并复制端口号ssh -p <port number> jenkins@localhost
我能够运行几乎所有已安装的工具,并且存在以下问题:
sonar-scanner
PATH
不包含来自Dockerfile的任何PATH
修改当我在Jenkins中作为代理运行映像时,几乎所有安装的工具都在工作,并且存在以下问题:
sonar-scanner
获得sonar-scanner: Permission denied
ibmcloud
(但在usr/local/ibmcloud
中可用)PATH
不包含来自Dockerfile的任何PATH修改sh
块因以下命令而失败:array=(some text some text ...)
使用:
syntax error: unexpected "("
我很难理解为什么会发生这些问题以及如何解决它们。
答案 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-dind
是busybox
,它不理解此语法(请参阅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