【问题标题】:Run a script inside a docker container that instantiates another docker container在 docker 容器中运行脚本,实例化另一个 docker 容器
【发布时间】:2019-06-11 14:34:26
【问题描述】:

我在一台 linux 机器上有两个 docker 镜像。一个是运行 jenkins,另一个是 nodejs 服务。 jenkins 已连接到 gitlab 帐户,因此在我的管道中使用

git branch: 'master', credentialsId: '6bc7-41b5-a1d9-2583489ad967', url: 'https://gitlab.com/myservice'

每次构建项目时,我的主机文件夹 jenkins_home/workspace/MyJenkinsItem/myservicerepo 中都有最新的 git 版本。具有 jenkins 的 docker 映像使用以下命令运行:

docker run --rm -d --name jenkins -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

在主机的 nodejs 项目中,我有一个 bash 脚本,它将文件从 jenkins_home/workspace/MyJenkinsItem/myservicerepo(主机)复制到我选择的文件夹(例如 /mypath/nodejs)。然后它通过使用 Dockerfile 构建一个 docker 镜像并运行我想要的服务。

我想做的是从詹金斯自动化这个过程。这意味着每次我从我的 jenkins 容器构建 jenkins 管道时,我都必须访问 /mypath/nodejs 中的脚本并在另一个容器中运行 /mypath/nodejs 中的所有项目。

我不确定我该怎么做。我尝试的是复制

docker run --rm -d --name jenkins  -v $MYPATH/nodejs/jenkins-script.sh:/var/scripts/jenkins-script.sh -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

但我有一个 jenkins 错误,即 jenkins_script.sh 在容器中找不到特定文件夹。好像我必须在我的 jenkins 容器中安装 nodejs 的所有内容并从那里实例化 nodejs 容器?

提前致谢

【问题讨论】:

  • 你看过这篇关于在 docker 中运行 CI 的帖子吗,jpetazzo.github.io/2015/09/03/…
  • 我发现了类似的东西,建议安装 docker 命令,即。 docker run -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker。但是,由于没有足够的权限,我的权限被拒绝

标签: git docker jenkins


【解决方案1】:

每当我必须启动 jenkins 时,我都必须安装 docker sock 和包含 docker 容器的所有文件的文件夹,即 Dockerfile、nodejs 的 package.json 等。所以我所做的是:

docker run --rm -d --name jenkins \
        -v MyNodeJSPAth/myfolder:MyNodeJSPAth/myfolder \
        -v MyPATH/jenkins/jenkins_home:/var/jenkins_home \
        -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
        -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

此外,因为我在 jenkins 容器内的 docker 命令被拒绝了权限,所以我将 /var/run 中 docker.sock 的权限更改为

chmod o+xw /var/run/docker.sock

但是,您也可以创建/使用可以访问 /var/run/docker.sock 的 docker 容器的当前用户,但我没有使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2022-10-04
    • 2019-08-15
    相关资源
    最近更新 更多