【发布时间】:2019-11-20 19:19:57
【问题描述】:
是否可以从正在运行的 Jenkins Docker 容器中为 CI/CD 创建和运行 Docker 容器?所以基本上是从正在运行的容器中访问主机服务器上的 Docker。
在我的主机服务器 (Ubuntu 19.04) 上安装了 Docker(Docker 版本 19.03.3)。通过运行以下命令,我创建了一个 Jenkins 容器,我授予 Docker 权限(我想):
mkdir /home/myuser/Desktop/jenkins_home
docker run -dit --name jenkins -v /home/myuser/Desktop/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 jenkins/jenkins:lts
在 Jenkins 中,我创建了一个从 Git 加载 Jenkinsfile 的管道,如下所示:
pipeline {
agent {
docker {
image 'ubuntu:19.04'
args '-u root:sudo -p 3000:3000'
}
}
stages {
stage('Install') {
steps {
sh 'apt-get update'
sh 'apt-get install -y curl'
sh 'curl -sL https://deb.nodesource.com/setup_13.x | sh -'
sh 'curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -'
sh 'echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list'
sh 'apt-get update'
sh 'apt-get install -y nodejs yarn'
}
}
stage('Build') {
steps {
sh './build.sh'
}
}
}
}
当我运行 Pipeline 时,它在尝试指示 Docker 拉取 ubuntu:19.04 Docker 映像时崩溃。错误是docker: not found。
我的 Jenkins 容器和主机 Docker 访问文件之间的连接配置错误。从 Docker 容器中在主机服务器上运行 Docker 命令需要什么配置?
【问题讨论】:
-
可能 jenkins 用户无法运行 docker deamon
-
在docker中看看docker